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