[ https://issues.apache.org/jira/browse/OPENEJB-1939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13499542#comment-13499542 ]
Romain Manni-Bucau commented on OPENEJB-1939: --------------------------------------------- Ok reproduced and commited some enhancement about it but the last issue is due to the fact TomEE starts through a listener started before your listener so your factory property is not set (maybe moving your listener to server.xml before TomEE one can help) > OpenEjb processes @Resource wrong > --------------------------------- > > Key: OPENEJB-1939 > URL: https://issues.apache.org/jira/browse/OPENEJB-1939 > Project: OpenEJB > Issue Type: Bug > Reporter: Borislav Kapukaranov > Attachments: listener.jar, TestResourceApp.war > > > Hi, > I have an application that injects a resource in a servlet and defines a > ejb-local-ref in it's web.xml but it isn't used anywhere. > A custom object factory is added to the naming resource for my annotated > field by a NamingListener. This way upon instantiating the servlet my factory > gets called and creates the resource. > However this doesn't work in Tomee. OpenEjb tries to find a service provider > for this resource instead of letting tomcat do its work. > I tested on tomcat 7.0.32 and tomee 1.5.0 > Attached are jar and app that will help to reproduce it. > Source included. > How to setup: > 1. Copy listener.jar into tomee/lib > 2. Copy in tomee/conf/context.xml this: <Listener > className="listener.NamingListener" /> > 3. Place the app in webapps and start tomee > 4. Request on http://localhost:8080/TestResourceApp/TestServlet > On Tomcat I get a good response and in the server's console I can find > system.out of my factory: > {quote} > creating resource from factory > resource ready > {quote} > On Tomee deployment fails with: > Caused by: org.apache.openejb.OpenEJBException: No provider available for > resource-ref 'null' of type 'resource.TestResource' for 'TestBean'. > at > org.apache.openejb.config.AutoConfig.autoCreateResource(AutoConfig.java:1770) > at > org.apache.openejb.config.AutoConfig.getResourceId(AutoConfig.java:1763) > at > org.apache.openejb.config.AutoConfig.getResourceId(AutoConfig.java:1714) > at > org.apache.openejb.config.AutoConfig.processResourceRef(AutoConfig.java:1101) > at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:832) > at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:186) > at > org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:363) > at > org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:850) > at > org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:791) > What is strange here is that it seems as if OpenEjb is trying to inject the > resource in the defined in the web.xml EJB instead of in the servlet. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira