[ 
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

Reply via email to