[hibernate-issues] [Hibernate-JIRA] Commented: (EJB-327) Cannot synchronize Tx with container managed JTA from within hibernate event listener

Adrian Pillinger (JIRA) noreply at atlassian.com
Wed Jan 9 06:02:55 EST 2008


    [ http://opensource.atlassian.com/projects/hibernate/browse/EJB-327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_29265 ] 

Adrian Pillinger commented on EJB-327:
--------------------------------------

I have created this with blocker priority because it actually stops us from writing audit logs to the database for any updates to the database.

> Cannot synchronize Tx with container managed JTA from within hibernate event listener
> -------------------------------------------------------------------------------------
>
>                 Key: EJB-327
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-327
>             Project: Hibernate Entity Manager
>          Issue Type: Bug
>          Components: EntityManager
>    Affects Versions: 3.3.1.GA
>         Environment: JBoss 4.2.0 GA, Hibernate 3.2.3 GA, DB2
>            Reporter: Adrian Pillinger
>            Priority: Blocker
>
> I am running within JBoss inside an EJB using container managed transactions. The transaction is running and my hibernate post-insert event listener gets fired. Within this post-insert event listener I am creating a new session and calling beginTransaction() in order to make further database updates in new session, but inside the same JTA transaction. 
> The begin transaction fails to synchronise with the current JTA transaction but there seems to be no apparent reason as to why this would fail.
> The listener code causing the problem is...
>     Session newSession = event.getPersister().getFactory().openSession();
>     newSession.beginTransaction();
> On the begin transaction call the exception thrown is
> 10:56:52,803 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
> org.hibernate.TransactionException: Could not register synchronization for container transaction
>         at org.hibernate.transaction.CMTTransaction.begin(CMTTransaction.java:45)
>         at org.hibernate.ejb.transaction.JoinableCMTTransaction.begin(JoinableCMTTransaction.java:70)
>         at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
>         at com.dolby.persist.listener.trigger.AuditTrigger.audit(AuditTrigger.java:67)
>         at com.dolby.persist.listener.trigger.AuditTrigger.fireAfterUpdateTrigger(AuditTrigger.java:293)
>         at com.dolby.persist.listener.trigger.TriggerEventListener.onPostUpdate(TriggerEventListener.java:522)
>         at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:180)
>         at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:159)
>         at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
>         at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>         at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:41)
>         at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
>         at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1562)
>         at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
>         at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
>         at com.dolby.persist.dao.hibernate.GenericHibernateFinderDAO.findById(GenericHibernateFinderDAO.java:250)
>         at com.dolby.persist.dao.hibernate.GenericHibernateCrudDAO.merge(GenericHibernateCrudDAO.java:112)
>         at com.dolby.pics.core.ejb.bean.impl.InventoryBean.save(InventoryBean.java:99)
>         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:585)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
>         at com.dolby.pics.core.ejb.bean.impl.DefaultInterceptor.log(DefaultInterceptor.java:36)
>         at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
>         at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
>         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
>         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278)
>         at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
>         at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
>         at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734)
>         at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560)
>         at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369)
>         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165)
> 10:56:52,804 ERROR [GenericHibernateCrudDAO] Hibernate Exception
> org.hibernate.TransactionException: Could not register synchronization for container transaction
>         at org.hibernate.transaction.CMTTransaction.begin(CMTTransaction.java:45)
>         at org.hibernate.ejb.transaction.JoinableCMTTransaction.begin(JoinableCMTTransaction.java:70)
>         at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
>         at com.dolby.persist.listener.trigger.AuditTrigger.audit(AuditTrigger.java:67)
>         at com.dolby.persist.listener.trigger.AuditTrigger.fireAfterUpdateTrigger(AuditTrigger.java:293)
>         at com.dolby.persist.listener.trigger.TriggerEventListener.onPostUpdate(TriggerEventListener.java:522)
>         at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:180)
>         at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:159)
>         at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
>         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
>         at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>         at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:41)
>         at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
>         at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1562)
>         at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
>         at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
>         at com.dolby.persist.dao.hibernate.GenericHibernateFinderDAO.findById(GenericHibernateFinderDAO.java:250)
>         at com.dolby.persist.dao.hibernate.GenericHibernateCrudDAO.merge(GenericHibernateCrudDAO.java:112)
>         at com.dolby.pics.core.ejb.bean.impl.InventoryBean.save(InventoryBean.java:99)
>         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:585)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
>         at com.dolby.pics.core.ejb.bean.impl.DefaultInterceptor.log(DefaultInterceptor.java:36)
>         at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
>         at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
>         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
>         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278)
>         at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
>         at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
>         at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734)
>         at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560)
>         at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369)
>         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165)
> 10:56:52,823 ERROR [DefaultInterceptor] An error occured executing: com.dolby.pics.core.ejb.bean.impl.InventoryBean.save([Ljava.lang.Object;@5c96bfda)
> com.dolby.pics.core.ejb.SaveFailedException: Could not register synchronization for container transaction
>         at com.dolby.pics.core.ejb.bean.impl.InventoryBean.save(InventoryBean.java:113)
>         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:585)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
>         at com.dolby.pics.core.ejb.bean.impl.DefaultInterceptor.log(DefaultInterceptor.java:36)
>         at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
>         at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
>         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
>         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278)
>         at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
>         at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
>         at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734)
>         at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560)
>         at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369)
>         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165)
> 		

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list