Exception on Timer-Execution under Weblogic
syngolis Jun 29, 2007 4:48 AMI am evaluating the compatibility of jBPM to work in other application server environments. Actual i am on testing in weblogic (8.0, 9.0, 9.2).
It works in all versions perfectly, except the timer functionality.
In 8.0 no TimedObject.class exists, so it has to be done i an other way )-:
In 9.0 and 9.2 The timers are created in db, but at the execution date (duedate) an exception is thrown:
####<29.06.2007 9.59 Uhr CEST> <Error> <EJB> <winpc70> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1183103982265> <BEA-011088> <The following error occurred while invoking the ejbTimeout(javax.ejb.Timer) method of EJB 'TimerServiceBean(Application: ISOWorkflow, EJBComponent: jbpm-enterprise.jar)'. javax.ejb.EJBException: EJB Exception: : org.jbpm.JbpmException: couldn't execute timer at org.jbpm.scheduler.ejbtimer.TimerServiceBean.ejbTimeout(TimerServiceBean.java:105) at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:298) at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) Caused by: javax.ejb.EJBException: EJB Exception: : org.jbpm.JbpmException: couldn't execute org.jbpm.scheduler.ejbtimer.ExecuteTimerCommand@dd5a9d at org.jbpm.ejb.impl.CommandServiceBean.execute(CommandServiceBean.java:92) at org.jbpm.ejb.impl.CommandServiceBean_jdfmx8_ELOImpl.execute(CommandServiceBean_jdfmx8_ELOImpl.java:61) at org.jbpm.scheduler.ejbtimer.TimerServiceBean.ejbTimeout(TimerServiceBean.java:95) at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:298) at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) Caused by: org.jbpm.graph.def.DelegationException: EJB Exception: ; nested exception is: java.lang.IllegalStateException: Single expiration timers cannot be cancelled from within ejbTimeout at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:376) 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.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157) at org.jbpm.graph.def.ProcessDefinition$$EnhancerByCGLIB$$fa7aa0e4.raiseException(<generated>) at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:367) at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:270) at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220) at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190) at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174) at org.jbpm.graph.def.Node.leave(Node.java:381) 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.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157) at org.jbpm.graph.node.State$$EnhancerByCGLIB$$e0d3d84e.leave(<generated>) at org.jbpm.graph.exe.Token.signal(Token.java:194) at org.jbpm.graph.exe.Token.signal(Token.java:157) 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.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157) at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$44509b08.signal(<generated>) at org.jbpm.job.Timer.execute(Timer.java:93) at org.jbpm.scheduler.ejbtimer.ExecuteTimerCommand.execute(ExecuteTimerCommand.java:23) at org.jbpm.ejb.impl.CommandServiceBean.execute(CommandServiceBean.java:90) ... 7 more Caused by: javax.ejb.TransactionRolledbackLocalException: EJB Exception: ; nested exception is: java.lang.IllegalStateException: Single expiration timers cannot be cancelled from within ejbTimeout at weblogic.ejb.container.internal.EJBRuntimeUtils.throwTransactionRolledbackLocal(EJBRuntimeUtils.java:226) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:671) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:604) at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:347) at weblogic.ejb.container.internal.BaseLocalObject.postInvokeTxRetry(BaseLocalObject.java:286) at org.jbpm.scheduler.ejbtimer.TimerServiceBean_p7ac74_ELOImpl.cancelTimersByName(TimerServiceBean_p7ac74_ELOImpl.java:153) at org.jbpm.scheduler.ejbtimer.EjbSchedulerService.deleteTimersByName(EjbSchedulerService.java:49) at org.jbpm.scheduler.def.CancelTimerAction.execute(CancelTimerAction.java:46) at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:255) ... 28 more Caused by: java.lang.IllegalStateException: Single expiration timers cannot be cancelled from within ejbTimeout at weblogic.ejb.container.timer.TimerImpl.cancel(TimerImpl.java:618) at org.jbpm.scheduler.ejbtimer.TimerServiceBean.cancelTimersByName(TimerServiceBean.java:53) at org.jbpm.scheduler.ejbtimer.TimerServiceBean_p7ac74_ELOImpl.cancelTimersByName(TimerServiceBean_p7ac74_ELOImpl.java:138) ... 31 more ; nested exception is: org.jbpm.JbpmException: couldn't execute org.jbpm.scheduler.ejbtimer.ExecuteTimerCommand@dd5a9d at weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:141) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:657) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:604) at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:347) at weblogic.ejb.container.internal.BaseLocalObject.postInvokeTxRetry(BaseLocalObject.java:286) at org.jbpm.ejb.impl.CommandServiceBean_jdfmx8_ELOImpl.execute(CommandServiceBean_jdfmx8_ELOImpl.java:76) at org.jbpm.scheduler.ejbtimer.TimerServiceBean.ejbTimeout(TimerServiceBean.java:95) ... 5 more ; nested exception is: org.jbpm.JbpmException: couldn't execute timer at weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:141) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:643) at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:604) at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:347) at weblogic.ejb.container.internal.BaseLocalObject.postInvoke(BaseLocalObject.java:570) at weblogic.ejb.container.internal.TimerDrivenLocalObject.postInvoke(TimerDrivenLocalObject.java:76) at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:395) at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) >
I use the cvs version (3.2.1) of the jbpm-engine.
Anyone an idea about this issue??