From jira-events at lists.jboss.org Mon Aug 16 11:42:12 2010 Content-Type: multipart/mixed; boundary="===============6388025799323075538==" MIME-Version: 1.0 From: Lincoln Baxter III (JIRA) To: jboss-jira at lists.jboss.org Subject: [jboss-jira] [JBoss JIRA] Created: (JBAS-8345) Cannot @Inject an EJB into another EJB (works fine injecting into CDI beans.) Date: Mon, 16 Aug 2010 11:42:12 -0400 Message-ID: <605296035.2511.1281973332602.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com> --===============6388025799323075538== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Cannot @Inject an EJB into another EJB (works fine injecting into CDI beans= .) ---------------------------------------------------------------------------= -- Key: JBAS-8345 URL: https://jira.jboss.org/browse/JBAS-8345 Project: JBoss Application Server Issue Type: Bug Security Level: Public (Everyone can see) Components: Weld/CDI Affects Versions: 6.0.0.M4 Environment: Linux 32bit, Java 6 Reporter: Lincoln Baxter III Assignee: Marius Bogoevici Attachments: ejb-inject-test.tar.gz See attached Maven Arquillian Test Project: Test and results also pasted below. Workaround in UserService: Changing the @Inject FeedService fs; annotation = to @EJB FeedService fs; causes injection to occur, but not through CDI. Thanks. ------------------------------------------------------ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import javax.inject.Inject; import org.jboss.arquillian.api.Deployment; import org.jboss.arquillian.api.Run; import org.jboss.arquillian.api.RunModeType; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ArchivePaths; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Test; import org.junit.runner.RunWith; /** * @author Lincoln Baxter, III= */ @RunWith(Arquillian.class) @Run(RunModeType.IN_CONTAINER) public class UserServiceTest { @Deployment public static JavaArchive createTestArchive() { return ShrinkWrap.create(JavaArchive.class, "test.jar") .addPackage(UserService.class.getPackage()) .addPackage(FeedService.class.getPackage()) .addManifestResource("test-beans.xml", ArchivePaths.create("= beans.xml")) .addManifestResource("test-persistence.xml", ArchivePaths.cr= eate("persistence.xml")); } @Inject private UserService us; @Inject private FeedService fs; @Test public void testCanInvokedInjectedEJB() throws Exception { assertFalse(fs.isInvoked()); us.invokeUsers(); assertTrue(fs.isInvoked()); } } package org.jboss; import java.io.Serializable; import javax.ejb.Stateful; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; @Stateful public class UserService implements Serializable { private static final long serialVersionUID =3D 2988513095024795683L; @PersistenceContext(type =3D PersistenceContextType.EXTENDED) private EntityManager em; @Inject private FeedService fs; protected EntityManager getEntityManager() { return em; } public void invokeUsers() { fs.invokeFeeds(); } } package org.jboss; import javax.ejb.Stateful; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; @Stateful public class FeedService { private static final long serialVersionUID =3D 5716926734835352145L; @PersistenceContext(type =3D PersistenceContextType.EXTENDED) private EntityManager entityManager; private boolean invoked; protected EntityManager getEntityManager() { return entityManager; } public void invokeFeeds() { this.invoked =3D true; System.out.println("invoked"); } public boolean isInvoked() { return invoked; } } ---------------------------------------------------------------------------= ---- Test set: org.jboss.UserServiceTest ---------------------------------------------------------------------------= ---- Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 5.991 sec <= << FAILURE! testCanInvokedInjectedEJB(org.jboss.UserServiceTest) Time elapsed: 0.637 s= ec <<< ERROR! javax.ejb.EJBException: java.lang.NullPointerException at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.handleExceptionInOurTx(CMTTxIn= terceptor.java:183) at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor= .java:251) at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.required(CMTTxInterceptor.java= :349) at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invoke(CMTTxInterceptor.java:2= 09) at org.jboss.ejb3.tx2.aop.CMTTxInterceptorWrapper.invoke(CMTTxInterceptorW= rapper.java:52) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInter= ceptor.java:76) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3Auth= enticationInterceptorv2.java:186) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationIntercept= or.java:41) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerS= hutdownInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor.invoke(= CurrentInvocationContextInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke= (CurrentInvocationInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.interceptor.EJB3TCCLInterceptor.invoke(EJB3TCCLIntercept= or.java:86) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer= .java:227) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer= .java:142) at org.jboss.ejb3.nointerface.impl.invocationhandler.NoInterfaceViewInvoca= tionHandler.invoke(NoInterfaceViewInvocationHandler.java:148) at org.jboss.ejb3.proxy.javassist.JavassistInvocationHandlerAdapter.invoke= (JavassistInvocationHandlerAdapter.java:71) at org.jboss.UserService_$$_javassist_15.invokeUsers(UserService_$$_javass= ist_15.java) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflecti= ons.java:304) at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflect= ionAccess.java:54) at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(S= ecureReflectionAccess.java:163) at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflectio= ns.java:298) at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(Enter= priseBeanProxyMethodHandler.java:127) at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHandle= r.java:43) at org.jboss.UserService_$$_javassist_10.invokeUsers(UserService_$$_javass= ist_10.java) at org.jboss.UserServiceTest.testCanInvokedInjectedEJB(UserServiceTest.jav= a:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMe= thod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCalla= ble.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMeth= od.java:41) at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:251) at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEventE= xecuter.java:44) at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEventE= xecuter.java:34) at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.ja= va:63) at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEve= ntContext.java:115) at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAd= aptor.java:117) at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:244) at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:207) at org.jboss.arquillian.junit.Arquillian$5$1.evaluate(Arquillian.java:225) at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Ar= quillian.java:297) at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunne= r.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunne= r.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:163) at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186) at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Ar= quillian.java:297) at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at org.junit.runner.JUnitCore.run(JUnitCore.java:136) at org.jboss.arquillian.junit.JUnitTestRunner.execute(JUnitTestRunner.java= :69) at org.jboss.arquillian.protocol.servlet_3.ServletTestRunner.doGet(Servlet= TestRunner.java:84) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:324) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:242) at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(Fil= terDispatcher.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:274) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:242) at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(Conversat= ionPropagationFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic= ationFilterChain.java:274) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil= terChain.java:242) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal= ve.java:275) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal= ve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityA= ssociationValve.java:181) at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.even= t(CatalinaContext.java:285) at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invo= ke(CatalinaContext.java:261) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.= java:88) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(= SecurityContextEstablishmentValve.java:93) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav= a:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav= a:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedCon= nectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve= .java:109) at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.in= voke(ActiveRequestResponseCacheValve.java:53) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:= 362) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:8= 77) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process= (Http11Protocol.java:653) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerException at org.jboss.UserService.invokeUsers(UserService.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.= java:122) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:111) at org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrapper.= invokeNext(ContainerMethodInvocationWrapper.java:72) at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(Interceptor= Sequencer.java:76) at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(Inter= ceptorSequencer.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja= va:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso= rImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:= 174) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod= (InvocationContextInterceptor.java:72) at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextI= nterceptor_z_fillMethod_20903429.invoke(InvocationContextInterceptor_z_fill= Method_20903429.java) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(Invo= cationContextInterceptor.java:88) at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextI= nterceptor_z_setup_20903429.invoke(InvocationContextInterceptor_z_setup_209= 03429.java) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.async.impl.interceptor.FutureSerializingInterceptor.invo= ke(FutureSerializingInterceptor.java:88) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(Cac= hedConnectionInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.= invoke(ExtendedPersistenceContextPropagationInterceptor.java:74) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(= TransactionScopedEntityManagerInterceptor.java:56) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInt= erceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInst= anceInterceptor.java:81) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.ja= va:102) at org.jboss.ejb3.core.context.SessionInvocationContextAdapter.proceed(Ses= sionInvocationContextAdapter.java:90) at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor= .java:247) ... 99 more -- = This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: htt= ps://jira.jboss.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira =20 --===============6388025799323075538==--