[jboss-user] [JBoss Seam] - Re: Can't inject entityManager into application component?
RobJellinghaus
do-not-reply at jboss.com
Fri Aug 25 03:51:53 EDT 2006
Hm. Well, I tried making it a @Stateful bean, and went through some rigmarole with needing to put the init() method in the local interface.
But it still fails. I now get this (sorry for the big mangled stacktrace, this forum isn't kind to long code lines):
[testng] WARN 25-08 00:41:39,828 (Log4JLogger.java:warn:104) -Stateful session beans was bound to the APPLICATION context - note that it is not safe to make concurrent calls to the bean: replogApplication
| [testng] INFO 25-08 00:41:39,828 (Log4JLogger.java:info:94) -Component: replogApplication, scope: APPLICATION, type: STATEFUL_SESSION_BEAN, class: com.robjsoftware.replog.ReplogApplication, JNDI: ReplogApplication/local
| ...
| [testng] DEBUG 25-08 00:41:43,860 (EJBContainer.java:initialiseInterceptors:718) -Initialising interceptors for ReplogApplication...
| [testng] DEBUG 25-08 00:41:43,860 (EJBContainer.java:initialiseInterceptors:720) -Default interceptors: null
| [testng] DEBUG 25-08 00:41:43,860 (EJBContainer.java:initialiseInterceptors:723) -Class interceptors: []
| [testng] DEBUG 25-08 00:41:43,860 (EJBContainer.java:initialiseInterceptors:739) -All applicable interceptor classes: []
| [testng] INFO 25-08 00:41:43,860 (MCKernelAbstraction.java:install:84) -installing bean: jboss.j2ee:jar=test,name=ReplogApplication,service=EJB3 with dependencies:
| [testng] DEBUG 25-08 00:41:43,985 (EJB3InterceptorsFactory.java:createPerJoinpoint:100) -Bound interceptors for joinpoint: public void com.robjsoftware.replog.ReplogApplication.init() - [Lorg.jboss.ejb3.interceptor.InterceptorInfo;@150b45a
| [testng] DEBUG 25-08 00:41:44,000 (UserTransactionImpl.java:<init>:56) -new UserTx: org.jboss.ejb3.tx.UserTransactionImpl at bb6255
| [testng] DEBUG 25-08 00:41:44,032 (EJB3InterceptorsFactory.java:createPerJoinpoint:100) -Bound interceptors for joinpoint: public void com.robjsoftware.replog.ReplogApplication.init() - [Lorg.jboss.ejb3.interceptor.InterceptorInfo;@b0ede6
| [testng] DEBUG 25-08 00:41:44,032 (JaccHelper.java:addPermissions:143) -ReplogApplication has no
| @SecurityDomain - skipping JACC configuration
| [testng] INFO 25-08 00:41:44,032 (EJBContainer.java:start:553) -STARTED EJB: com.robjsoftware.replog.ReplogApplication ejbName: ReplogApplication
| [testng] DEBUG 25-08 00:41:44,063 (Ejb3Deployment.java:registerEJBContainer:440) -Bound ejb3 container jboss.j2ee:service=EJB3,jar=test,name=ReplogApplication
| [testng] DEBUG 25-08 00:41:44,063 (Log4JLogger.java:debug:84) -instantiating Seam component: isUserInRole
| [testng] DEBUG 25-08 00:41:44,063 (Log4JLogger.java:debug:84) -instantiating Seam component: statelessContext
| [testng] DEBUG 25-08 00:41:44,063 (Log4JLogger.java:debug:84) -instantiating Seam component: replogApplication
| [testng] DEBUG 25-08 00:41:44,063 (Log4JLogger.java:debug:84) -JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.LocalOnlyContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
| [testng] DEBUG 25-08 00:41:44,094 (SecurityAssociation.java:<clinit>:143) -Using ThreadLocal: false
| [testng] DEBUG 25-08 00:41:44,125 (ExtendedPersistenceContextPropagationInterceptor.java:invoke:50) -++++ LongLivedSessionPropagationInterceptor
| [testng] DEBUG 25-08 00:41:44,125 (ReplogApplication.java:init:37) -Creating replogApplication
| [testng] javax.ejb.EJBException: java.lang.NullPointerException
| [testng] at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69)
| [testng] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
| [testng] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:81)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:189)
| [testng] at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
| [testng] at $Proxy55.init(Unknown Source)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| [testng] at java.lang.reflect.Method.invoke(Method.java:585)
| [testng] at org.jboss.seam.util.Reflections.invoke(Reflections.java:13)
| [testng] at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:32)
| [testng] at org.jboss.seam.Component.callComponentMethod(Component.java:1338)
| [testng] at org.jboss.seam.Component.callCreateMethod(Component.java:1326)
| [testng] at org.jboss.seam.Component.newInstance(Component.java:1316)
| [testng] at org.jboss.seam.Component.getInstance(Component.java:1267)
| [testng] at org.jboss.seam.Component.getInstance(Component.java:1257)
| [testng] at org.jboss.seam.contexts.Lifecycle.startup(Lifecycle.java:125)
| [testng] at org.jboss.seam.contexts.Lifecycle.endInitialization(Lifecycle.java:104)
| [testng] at org.jboss.seam.init.Initialization.init(Initialization.java:199)
| [testng] at org.jboss.seam.mock.SeamTest.init(SeamTest.java:321)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| [testng] at java.lang.reflect.Method.invoke(Method.java:585)
| [testng] at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:529)
| [testng] at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:311)
| [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:149)
| [testng] at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:77)
| [testng] at org.testng.TestRunner.privateRun(TestRunner.java:614)
| [testng] at org.testng.TestRunner.run(TestRunner.java:505)
| [testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:221)
| [testng] at org.testng.SuiteRunner.run(SuiteRunner.java:147)
| [testng] at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:576)
| [testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:539)
| [testng] at org.testng.TestNG.run(TestNG.java:316)
| [testng] at org.testng.TestNG.privateMain(TestNG.java:666)
| [testng] at org.testng.TestNG.main(TestNG.java:608)
| [testng] Caused by: java.lang.NullPointerException
| [testng] at com.robjsoftware.replog.ReplogApplication.init(ReplogApplication.java:40)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
| :25)
| [testng] at java.lang.reflect.Method.invoke(Method.java:585)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:109)
| [testng] at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
| [testng] at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
| [testng] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| [testng] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
| [testng] ... 47 more
You guessed it... same darn NullPointerException because entityManager is null.
What am I missing? I have plain old POJOs in my session scope that I inject an EntityManager to in exactly the same way. Why is this not working at application scope?
Maybe there's another way to do what I'm wanting to do here... basically, I want there to be some application component that maintains a list of "synchronizers", one synchronizer per Site entity that exists in the database. Perhaps I want a stateless component that extracts the list of sites, and then have the application component inject that SiteList and construct its synchronizers from that? I'll try that next (but not tonight, it's 1 AM ;-). But it'd still be nice to know the theory behind why what I'm doing here isn't supported... or know what I'm doing wrong!
Thanks,
Rob
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3967418#3967418
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3967418
More information about the jboss-user
mailing list