From jira-events at lists.jboss.org Fri Sep 24 09:45:29 2010 Content-Type: multipart/mixed; boundary="===============5153963954089116402==" MIME-Version: 1.0 From: Shelly McGowan (JIRA) To: jboss-jira at lists.jboss.org Subject: [jboss-jira] [JBoss JIRA] Resolved: (JBAS-8345) Cannot @Inject an EJB into another EJB (works fine injecting into CDI beans.) Date: Fri, 24 Sep 2010 09:45:29 -0400 Message-ID: <844520257.23005.1285335929752.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com> In-Reply-To: 605296035.2511.1281973332602.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com --===============5153963954089116402== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [ https://jira.jboss.org/browse/JBAS-8345?page=3Dcom.atlassian.jira.pl= ugin.system.issuetabpanels:all-tabpanel ] Shelly McGowan resolved JBAS-8345. ---------------------------------- Fix Version/s: 6.0.0.M5 (was: 6.0.0.CR1) Resolution: Done > Cannot @Inject an EJB into another EJB (works fine injecting into CDI bea= ns.) > -------------------------------------------------------------------------= ---- > > 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 > Fix For: 6.0.0.M5 > > 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; annotatio= n 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, I= II > */ > @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.= create("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= sec <<< ERROR! > javax.ejb.EJBException: java.lang.NullPointerException > at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.handleExceptionInOurTx(CMTTx= Interceptor.java:183) > at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxIntercept= or.java:251) > at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.required(CMTTxInterceptor.ja= va:349) > at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invoke(CMTTxInterceptor.java= :209) > at org.jboss.ejb3.tx2.aop.CMTTxInterceptorWrapper.invoke(CMTTxIntercepto= rWrapper.java:52) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt= erceptor.java:76) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3Au= thenticationInterceptorv2.java:186) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce= ptor.java:41) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContaine= rShutdownInterceptor.java:67) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor.invok= e(CurrentInvocationContextInterceptor.java:47) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invo= ke(CurrentInvocationInterceptor.java:67) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.interceptor.EJB3TCCLInterceptor.invoke(EJB3TCCLInterce= ptor.java:86) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContain= er.java:227) > at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContain= er.java:142) > at org.jboss.ejb3.nointerface.impl.invocationhandler.NoInterfaceViewInvo= cationHandler.invoke(NoInterfaceViewInvocationHandler.java:148) > at org.jboss.ejb3.proxy.javassist.JavassistInvocationHandlerAdapter.invo= ke(JavassistInvocationHandlerAdapter.java:71) > at org.jboss.UserService_$$_javassist_15.invokeUsers(UserService_$$_java= ssist_15.java) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.= java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces= sorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflec= tions.java:304) > at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureRefle= ctionAccess.java:54) > at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation= (SecureReflectionAccess.java:163) > at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflect= ions.java:298) > at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(Ent= erpriseBeanProxyMethodHandler.java:127) > at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHand= ler.java:43) > at org.jboss.UserService_$$_javassist_10.invokeUsers(UserService_$$_java= ssist_10.java) > at org.jboss.UserServiceTest.testCanInvokedInjectedEJB(UserServiceTest.j= ava:61) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.= java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces= sorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(Framework= Method.java:44) > at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCal= lable.java:15) > at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMe= thod.java:41) > at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:251) > at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEven= tExecuter.java:44) > at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEven= tExecuter.java:34) > at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.= java:63) > at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractE= ventContext.java:115) > at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunner= Adaptor.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:22= 5) > at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(= Arquillian.java:297) > at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221) > at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRun= ner.java:76) > at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRun= ner.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:18= 6) > at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(= Arquillian.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.ja= va:69) > at org.jboss.arquillian.protocol.servlet_3.ServletTestRunner.doGet(Servl= etTestRunner.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(Appl= icationFilterChain.java:324) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF= ilterChain.java:242) > at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(F= ilterDispatcher.java:63) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl= icationFilterChain.java:274) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF= ilterChain.java:242) > at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(Convers= ationPropagationFilter.java:68) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl= icationFilterChain.java:274) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF= ilterChain.java:242) > at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV= alve.java:275) > at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV= alve.java:191) > at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit= yAssociationValve.java:181) > at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.ev= ent(CatalinaContext.java:285) > at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.in= voke(CatalinaContext.java:261) > at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv= e.java:88) > at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok= e(SecurityContextEstablishmentValve.java:93) > at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j= ava:127) > at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j= ava:102) > at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC= onnectionValve.java:158) > at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal= ve.java:109) > at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.= invoke(ActiveRequestResponseCacheValve.java:53) > at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav= a:362) > at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java= :877) > at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce= ss(Http11Protocol.java:653) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:95= 1) > 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.= java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces= sorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocatio= n.java:122) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:111) > at org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrappe= r.invokeNext(ContainerMethodInvocationWrapper.java:72) > at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(Intercept= orSequencer.java:76) > at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(Int= erceptorSequencer.java:62) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.= java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces= sorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.jav= a:174) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMeth= od(InvocationContextInterceptor.java:72) > at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContex= tInterceptor_z_fillMethod_20903429.invoke(InvocationContextInterceptor_z_fi= llMethod_20903429.java) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(In= vocationContextInterceptor.java:88) > at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContex= tInterceptor_z_setup_20903429.invoke(InvocationContextInterceptor_z_setup_2= 0903429.java) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.async.impl.interceptor.FutureSerializingInterceptor.in= voke(FutureSerializingInterceptor.java:88) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(C= achedConnectionInterceptor.java:62) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationIntercepto= r.invoke(ExtendedPersistenceContextPropagationInterceptor.java:74) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invok= e(TransactionScopedEntityManagerInterceptor.java:56) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsI= nterceptor.java:47) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulIn= stanceInterceptor.java:81) > at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.= java:102) > at org.jboss.ejb3.core.context.SessionInvocationContextAdapter.proceed(S= essionInvocationContextAdapter.java:90) > at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxIntercept= or.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 --===============5153963954089116402==--