Borislav Kapukaranov created OPENEJB-1939:
---------------------------------------------

             Summary: OpenEjb processes @Resource wrong
                 Key: OPENEJB-1939
                 URL: https://issues.apache.org/jira/browse/OPENEJB-1939
             Project: OpenEJB
          Issue Type: Bug
            Reporter: Borislav Kapukaranov


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 bean 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