Hi all and excuse my english.
I use Tomcat 6, Jersey. I want CDI implementation in Tomcat so I choose the
Weld Module from Seam 3. The reason is that I want inject the entity manager
into the jersey rest services.
I've implemented my "com.sun.jersey.spi.container.servlet.ServletContainer"
to support CDI as suggested in this post:
http://jersey.576304.n2.nabble.com/Weld-Jersey-Tomcat-td5959010.html
http://jersey.576304.n2.nabble.com/Weld-Jersey-Tomcat-td5959010.html
So I have these descriptors:
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
java:/comp/env/jdbc/postgres
entity.Form
web.xml
<?xml version="1.0" encoding="UTF-8"?>
Prova3
org.jboss.weld.environment.servlet.Listener
JAX-RS Tools Generated - Do not modify
JAX-RS Servlet
cdi.TomcatCDIServlet
com.sun.jersey.config.property.packages
service
1
JAX-RS Servlet
/s/*
BeanManager
javax.enterprise.inject.spi.BeanManager
context.xml
<?xml version="1.0" encoding="UTF-8"?>
And my basic classes for test are:
public class EMProducer {
@Test
@Produces
@SeamManaged
@PersistenceUnit(unitName="pu")
EntityManagerFactory emf;
}
and jersey:
@RequestScoped
@Path("/hello")
public class Hello {
@Inject
@Test
@PersistenceContext
EntityManager em;
@SuppressWarnings("unchecked")
@GET
@Produces(MediaType.APPLICATION_XML)
public List getClichedMessage() {
return em.createQuery("select e from MyEntity e").getResultList();
}
}
MyEntity is JAXB annotated with @XmlRootElement.
And the errors...
[EL Info]: 2011-03-09 13:10:15.886--ServerSession(26414138)--EclipseLink,
version: Eclipse Persistence Services - 2.1.2.v20101206-r8635
[EL Info]: 2011-03-09
13:10:16.281--ServerSession(26414138)--file:/C:/Users/andrea/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Prova3/WEB-INF/classes/_pu
login successful
9-mar-2011 13.10.16 com.sun.jersey.spi.container.ContainerResponse
mapMappableContainerException
GRAVE: The RuntimeException could not be mapped to a response, re-throwing
to the HTTP container
java.lang.RuntimeException: javax.naming.NamingException: Cannot create
resource instance
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getSeamTransaction(DefaultSeamTransaction.java:153)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.isActive(DefaultSeamTransaction.java:57)
at
org.jboss.seam.persistence.ManagedPersistenceContextProxyHandler.joinTransaction(ManagedPersistenceContextProxyHandler.java:127)
at
org.jboss.seam.persistence.ManagedPersistenceContextProxyHandler.invoke(ManagedPersistenceContextProxyHandler.java:115)
at $Proxy28.createQuery(Unknown Source)
at service.Hello.hello(Hello.java:46)
at
service.org$jboss$weld$bean-flat-ManagedBean-class_service$Hello_$$_WeldClientProxy.hello(org$jboss$weld$bean-flat-ManagedBean-class_service$Hello_$$_WeldClientProxy.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:167)
at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70)
at
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.naming.NamingException: Cannot create resource instance
at
org.apache.naming.factory.TransactionFactory.getObjectInstance(TransactionFactory.java:113)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getUserTransaction(DefaultSeamTransaction.java:177)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.createUTTransaction(DefaultSeamTransaction.java:169)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getSeamTransaction(DefaultSeamTransaction.java:134)
... 37 more
9-mar-2011 13.10.16 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet JAX-RS Servlet threw exception
java.lang.RuntimeException: javax.naming.NamingException: Cannot create
resource instance
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getSeamTransaction(DefaultSeamTransaction.java:153)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.isActive(DefaultSeamTransaction.java:57)
at
org.jboss.seam.persistence.ManagedPersistenceContextProxyHandler.joinTransaction(ManagedPersistenceContextProxyHandler.java:127)
at
org.jboss.seam.persistence.ManagedPersistenceContextProxyHandler.invoke(ManagedPersistenceContextProxyHandler.java:115)
at $Proxy28.createQuery(Unknown Source)
at service.Hello.hello(Hello.java:46)
at
service.org$jboss$weld$bean-flat-ManagedBean-class_service$Hello_$$_WeldClientProxy.hello(org$jboss$weld$bean-flat-ManagedBean-class_service$Hello_$$_WeldClientProxy.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:167)
at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70)
at
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:419)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.naming.NamingException: Cannot create resource instance
at
org.apache.naming.factory.TransactionFactory.getObjectInstance(TransactionFactory.java:113)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getUserTransaction(DefaultSeamTransaction.java:177)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.createUTTransaction(DefaultSeamTransaction.java:169)
at
org.jboss.seam.persistence.transaction.DefaultSeamTransaction.getSeamTransaction(DefaultSeamTransaction.java:134)
... 37 more
9-mar-2011 13.10.16 org.jboss.weld.bean.ManagedBean destroy
GRAVE: WELD-000019 Error destroying an instance Managed Bean [class
service.Hello] with qualifiers [@Any @Default] of service.Hello_at_1dbe135
Suggestions? Thanks in advance.
Andrea
--
View this message in context: http://jersey.576304.n2.nabble.com/Tomcat-6-Jersey-Weld-Seam-3-tp6153390p6153390.html
Sent from the Jersey mailing list archive at Nabble.com.