[jboss-jira] [JBoss JIRA] Resolved: (JBAS-8345) Cannot @Inject an EJB into another EJB (works fine injecting into CDI beans.)

Shelly McGowan (JIRA) jira-events at lists.jboss.org
Fri Sep 24 09:45:29 EDT 2010


     [ https://jira.jboss.org/browse/JBAS-8345?page=com.atlassian.jira.plugin.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 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
>             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; 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 <a href="mailto:lincolnbaxter at gmail.com">Lincoln Baxter, III</a>
>  */
> @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 = 2988513095024795683L;
>    @PersistenceContext(type = 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 = 5716926734835352145L;
>    @PersistenceContext(type = PersistenceContextType.EXTENDED)
>    private EntityManager entityManager;
>    private boolean invoked;
>    protected EntityManager getEntityManager()
>    {
>       return entityManager;
>    }
>    public void invokeFeeds()
>    {
>       this.invoked = 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(CMTTxInterceptor.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:209)
> 	at org.jboss.ejb3.tx2.aop.CMTTxInterceptorWrapper.invoke(CMTTxInterceptorWrapper.java:52)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.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(Ejb3AuthenticationInterceptorv2.java:186)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor.invoke(CurrentInvocationContextInterceptor.java:47)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.interceptor.EJB3TCCLInterceptor.invoke(EJB3TCCLInterceptor.java:86)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java: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.NoInterfaceViewInvocationHandler.invoke(NoInterfaceViewInvocationHandler.java:148)
> 	at org.jboss.ejb3.proxy.javassist.JavassistInvocationHandlerAdapter.invoke(JavassistInvocationHandlerAdapter.java:71)
> 	at org.jboss.UserService_$$_javassist_15.invokeUsers(UserService_$$_javassist_15.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 org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:304)
> 	at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
> 	at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
> 	at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:298)
> 	at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127)
> 	at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHandler.java:43)
> 	at org.jboss.UserService_$$_javassist_10.invokeUsers(UserService_$$_javassist_10.java)
> 	at org.jboss.UserServiceTest.testCanInvokedInjectedEJB(UserServiceTest.java:61)
> 	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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:251)
> 	at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEventExecuter.java:44)
> 	at org.jboss.arquillian.impl.handler.TestEventExecuter.callback(TestEventExecuter.java:34)
> 	at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
> 	at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
> 	at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.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(Arquillian.java:297)
> 	at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.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(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.java:69)
> 	at org.jboss.arquillian.protocol.servlet_3.ServletTestRunner.doGet(ServletTestRunner.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(ApplicationFilterChain.java:324)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)
> 	at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)
> 	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:68)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181)
> 	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285)
> 	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(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.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
> 	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.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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.java:111)
> 	at org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrapper.invokeNext(ContainerMethodInvocationWrapper.java:72)
> 	at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:76)
> 	at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:62)
> 	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 org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
> 	at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_20903429.invoke(InvocationContextInterceptor_z_fillMethod_20903429.java)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
> 	at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_20903429.invoke(InvocationContextInterceptor_z_setup_20903429.java)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.async.impl.interceptor.FutureSerializingInterceptor.invoke(FutureSerializingInterceptor.java:88)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:74)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.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(StatefulInstanceInterceptor.java:81)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 	at org.jboss.ejb3.core.context.SessionInvocationContextAdapter.proceed(SessionInvocationContextAdapter.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: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list