[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Injected EntityManager in SLSB after an exception

lpmon do-not-reply at jboss.com
Wed Jan 23 11:59:05 EST 2008


Environment: JBoss AS 4.0.5, Hibernate 3.2.5, Hibernate EM 3.3.1

I am using CMP.  I have an injected entitymanager (em) in an SLSB I use to persist new rows into the DB.

After an exception is thrown (in this case a dup key) -  subsequent calls to the SLSB method that does the persist seems to be using the same em that was rendered unusable by the exception. 

I say "unusable" because per Hibernate documentation an em must be closed after an exception. BUT: I am using CMP with @PersistenceContext for injection so the container should handle that. Right?  I would think the container would inject a new em for the next call to the SLSB method????    Is there something I must do to force the new em to be injected?  

On the first insert with a dup key I get an EntityExistsException (this is expected).  But, on the next call to the SLSB I get the stack trace below which to me indicates the SLSB still has the old em and is trying to use it:

2008-01-23 10:51:15,009 ERROR [STDERR]  | javax.ejb.EJBTransactionRolledbackException: javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
2008-01-23 10:51:15,009 ERROR [STDERR] javax.ejb.EJBTransactionRolledbackException: javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:93)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:211)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at $Proxy148.saveEvent(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.swevents.SWEvent.process(SWEvent.java:358)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.bufs.EventBuf.processEvents(EventBuf.java:503)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.bufs.EventBuf.process(EventBuf.java:485)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.server.RFMsg.rcvUnitData(RFMsg.java:939)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.server.RFMsg.RcvSendData(RFMsg.java:685)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.server.RFMsg.ProcessInbound(RFMsg.java:393)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.server.RFPakIn.ProcessMessages(RFPakIn.java:160)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.server.RFPakIn.process(RFPakIn.java:61)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.dbfacade.SWUnit.run(SWUnit.java:297)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at com.shockwatch.ejb3.session.PacketProcessorBean.processPacket(PacketProcessorBean.java:38)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:37)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:98)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:53)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at java.lang.reflect.Method.invoke(Unknown Source)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:46)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
2008-01-23 10:51:15,009 ERROR [STDERR] 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:211)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at $Proxy145.processPacket(Unknown Source)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at com.shockwatch.server.PakInRunner.run(PakInRunner.java:31)
2008-01-23 10:51:15,040 ERROR [STDERR] 	at com.shockwatch.util.ThreadPool$PooledThread.run(ThreadPool.java:55)
2008-01-23 10:51:15,056 ERROR [STDERR] Caused by: javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
2008-01-23 10:51:15,056 ERROR [STDERR] 	at org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.java:150)
2008-01-23 10:51:15,056 ERROR [STDERR] 	at org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:174)



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4122712#4122712

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4122712



More information about the jboss-user mailing list