[JBoss jBPM] - Asynchron execution and repeat timer
by Olivier.ch
I have a task that contains a timer.
This timer works fine : is created when it enters on the task and is deleted when it exits.
When timeout, the execution is correct.
But my process has the possibility to re-enter on this task.
When it re-enters on this task, I don't see the create-timer and when I save my process instance I get this error :
| 16:31:06,741 DEBUG DbPersistenceService:253 - committing hibernate transaction org.hibernate.transaction.JDBCTransaction@1df503b
| 16:31:06,803 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
| org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#428]
| at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357)
| at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
| at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
| at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:255)
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:213)
| at org.jbpm.svc.Services.close(Services.java:222)
| at org.jbpm.JbpmContext.close(JbpmContext.java:139)
| at ch.workflow.jbpmImpl.JbpmTools.closeJBPMContext(JbpmTools.java:281)
| at ch.workflow.jbpmImpl.JbpmTools.next(JbpmTools.java:234)
| at ocd.common.workflow.facade.FacadeOCD.retroceder(FacadeOCD.java:129)
| at ocd.common.workflow.facade.FacadeOCD$$FastClassByCGLIB$$bb5d06cc.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:705)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
| at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
| at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
| at ocd.common.workflow.facade.FacadeOCD$$EnhancerByCGLIB$$1c8c2a6b.retroceder(<generated>)
| at ch.test.action.ChoisirCrise.execute(ChoisirCrise.java:189)
| at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
| at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
| at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
| at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
| at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
| at java.lang.Thread.run(Thread.java:534)
| 16:31:06,819 ERROR DbPersistenceService:257 - hibernate commit failed
| org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#428]
| at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357)
| at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
| at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
| at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:255)
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:213)
| at org.jbpm.svc.Services.close(Services.java:222)
| at org.jbpm.JbpmContext.close(JbpmContext.java:139)
| at ch.workflow.jbpmImpl.JbpmTools.closeJBPMContext(JbpmTools.java:281)
| at ch.workflow.jbpmImpl.JbpmTools.next(JbpmTools.java:234)
| at ocd.common.workflow.facade.FacadeOCD.retroceder(FacadeOCD.java:129)
| at ocd.common.workflow.facade.FacadeOCD$$FastClassByCGLIB$$bb5d06cc.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:705)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
| at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
| at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
| at ocd.common.workflow.facade.FacadeOCD$$EnhancerByCGLIB$$1c8c2a6b.retroceder(<generated>)
| at ch.test.action.ChoisirCrise.execute(ChoisirCrise.java:189)
| at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
| at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
| at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
| at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
| at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
| at java.lang.Thread.run(Thread.java:534)
| 16:31:06,819 DEBUG DbPersistenceService:297 - rolling back hibernate transaction
| 16:31:06,834 DEBUG DbPersistenceService:311 - closing hibernate session
| 16:31:06,850 ERROR Services:225 - problem closing service 'persistence'
| org.jbpm.persistence.JbpmPersistenceException: hibernate commit failed
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:218)
| at org.jbpm.svc.Services.close(Services.java:222)
| at org.jbpm.JbpmContext.close(JbpmContext.java:139)
| at ch.workflow.jbpmImpl.JbpmTools.closeJBPMContext(JbpmTools.java:281)
| at ch.workflow.jbpmImpl.JbpmTools.next(JbpmTools.java:234)
| at ocd.common.workflow.facade.FacadeOCD.retroceder(FacadeOCD.java:129)
| at ocd.common.workflow.facade.FacadeOCD$$FastClassByCGLIB$$bb5d06cc.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:705)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
| at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
| at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
| at ocd.common.workflow.facade.FacadeOCD$$EnhancerByCGLIB$$1c8c2a6b.retroceder(<generated>)
| at ch.test.action.ChoisirCrise.execute(ChoisirCrise.java:189)
| at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
| at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
| at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
| at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
| at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
| at java.lang.Thread.run(Thread.java:534)
| Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#428]
| at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357)
| at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
| at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
| at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:255)
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:213)
| ... 54 more
| 16:31:06,850 DEBUG Services:221 - closing service 'tx': org.jbpm.tx.TxService@9addef
| 16:31:06,850 DEBUG Services:221 - closing service 'scheduler': org.jbpm.scheduler.db.DbSchedulerService@8f6d64
| 16:31:06,850 DEBUG Services:221 - closing service 'logging': org.jbpm.logging.db.DbLoggingService@56ff18
| org.jbpm.JbpmException: problem closing services {persistence=org.jbpm.persistence.JbpmPersistenceException: hibernate commit failed}
| at org.jbpm.svc.Services.close(Services.java:234)
| at org.jbpm.JbpmContext.close(JbpmContext.java:139)
| at ch.workflow.jbpmImpl.JbpmTools.closeJBPMContext(JbpmTools.java:281)
| at ch.workflow.jbpmImpl.JbpmTools.next(JbpmTools.java:234)
| at ocd.common.workflow.facade.FacadeOCD.retroceder(FacadeOCD.java:129)
| at ocd.common.workflow.facade.FacadeOCD$$FastClassByCGLIB$$bb5d06cc.invoke(<generated>)
| at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
| at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:705)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
| at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
| at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
| at ocd.common.workflow.facade.FacadeOCD$$EnhancerByCGLIB$$1c8c2a6b.retroceder(<generated>)
| at ch.test.action.ChoisirCrise.execute(ChoisirCrise.java:189)
| at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
| at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
| at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
| at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
| at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
| at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
| at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
| at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
| at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
| at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
| at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
| at java.lang.Thread.run(Thread.java:534)
| Caused by: org.jbpm.persistence.JbpmPersistenceException: hibernate commit failed
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:218)
| at org.jbpm.svc.Services.close(Services.java:222)
| ... 53 more
| Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.graph.exe.Token#428]
| at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1714)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2357)
| at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
| at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
| at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
| at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
| at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
| at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
| at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
| at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
| at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
| at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:255)
| at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:213)
| ... 54 more
|
Before the timer wasn't on and it was working correctly ...
What is the problem ... ?
Olivier
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4103300#4103300
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4103300
18 years, 8 months
[JBoss Messaging] - Re: Connection caching
by timfox
Inside the app server you can use the JBoss JCA resource adapter (the thing at /JmsXA - see the user wiki) for caching sessions.
This is useful when you're for example sending messages from an EJB.
Note that JCA JMS resource adapters do not cache JMS connections, they cache JMS sessions.,
Caching JMS connections won't be much use to you, since you don't want to be creating a new session every time you send a message (slow). Creating a producer every time you send a message (which would happen with JmsXA) is not so bad since mesage producers are typically lightweight objects created only on the client side - although of course there is some overhead even with that.
On the client side the JBoss JMS resource adapter won't work. But then, if you handle connection creation and closing sensibly in your own code there should be no need for caching connections/sessions/consumers.
Personally I dislike these caching layers since they encourage bad programming habits and cover a multitude of sins.
At the end of the day in order to use JMS optimally you need to have a good understanding of the relationship between connection, session, consumer and producer objects and use them appropriately.
You may be able to get something like Jencks to work for you on the client side. AFAIK this is an alternative JCA adapter. But be warned, as mentioned before, these will only cache JMS sessions, so you'll still be creating a producer / consumer each time, and you have to be careful to avoid losing messages due to consumers being transiently created/closed.
My advice, avoid Spring JMSTemplate altogether and don't use caching, apart from on the app server for sending messages (for receiving you could use MDBs)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4103297#4103297
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4103297
18 years, 8 months
[JBoss Seam] - Re: ManagedPersistenceContext in Manning JPA book
by Delphi's Ghost
My understanding of it is that :
@PersistenceContext (EJB PC) - Single shot persistence context for the duration of the method call
@PersistenceContext(Type=EXTENDED) (Extended EJB PC) - Persistence context that lasts for the duration of the session bean, but not shareable across session beans.
@In private EntityManager entityManager (SMPC) - Seam Managed Persistence Context that is tied to the conversation and can be used in multiple method calls, and across multiple beans. As amitev mentions, you get a lot of extras for free with the SMPC.
The SMPC also gets rid of lazy initialization errors by using two transactions on a request. One to commit the work, and then another to let you read database entities when rendering the view if you use the Seam transactional phase listener.
If you are working in a Seam-Gen generated app, you should be ready to start using SMPCs already without requiring any tweaking with the config.
You use SMPCs in your beans by injecting the entityManager using the following :
| @In
| private EntityManager entityManager;
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4103295#4103295
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4103295
18 years, 8 months