You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Romain Manni-Bucau (JIRA)" <ji...@apache.org> on 2012/11/22 14:28:58 UTC

[jira] [Reopened] (OPENEJB-1939) OpenEjb processes @Resource wrong

     [ https://issues.apache.org/jira/browse/OPENEJB-1939?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Romain Manni-Bucau reopened OPENEJB-1939:
-----------------------------------------


reopening since it breaks TCKs

the point here is you'll easily get listener lifecycle hell, so ok you don't have exception at startup but it doesn't work as expected

TomEE manages @Resource (in more classes than tomcat, that's why it does it)

Wonder if a cdi extension (very powerful) or a simple producer with a custom qualifier (very simple but need a qualifier) couldn't be enough for this need

That's a simpler (and portable) solution

wdyt?

If it doesn't match we could add in TomEE/OpenEJB an interface with a match method and a create method to do something close to what you want and use it as fallback if specified and nothing was found for the resource being created

That's said and after some more thought about it the cdi solution is much more interesting

If you want to speak a bit about it i'll be on IRC (freenode, #openejb) for some hours
                
> 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