[jboss-user] [JBoss jBPM] - Problem with Timer execution. process classloader can't find

rayun do-not-reply at jboss.com
Fri Mar 14 08:05:12 EDT 2008


Hi,
I have a problem with the execution of an action for my timers.
I am using JBPM 3.2.2 with Tomcat and try to execute a process with a timer on 2 tasks in a fork.

The part of the process which give me troubles is the following :


  | <fork name="fork1">
  |       <transition name="To client" to="Client validation"></transition>
  |       <transition name="To broker" to="Broker validation"></transition>
  |    </fork>
  |    <task-node name="Client validation">
  |       <task name="client complete and validate informations" swimlane="client">
  |       	<timer name="reminder1" duedate="30 seconds">
  | 			<action name="Send a time-out notice for client" class="common.processhandlers.DueDateHandler"></action>
  | 		</timer>
  |       </task>
  |       <transition name="Client informations completed" to="join1"></transition>
  |    </task-node>
  |    <task-node name="Broker validation">
  |       <task name="broker complete and validate informations" swimlane="broker">
  |       	<timer name="reminder2" duedate="30 seconds">
  | 			<action name="Send a time-out notice for broker" class="common.processhandlers.DueDateHandler"></action>
  | 		</timer>
  |       </task>
  |       <transition name="Broker informations completed" to="join1"></transition>
  |    </task-node>
  |    <join name="join1">
  |       <transition name="All informations available" to="end"></transition>
  |    </join>
  | 

The class DueDateHandler i try to execute in both timer is in the sources of the web application executing the process and do nothing but displaying a message.

When i try to execute this process and the duedate for the timers expire, i get the following Error :



  | ERROR - def.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.job.Timer#21383]
  | 	at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1765)
  | 	at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2407)
  | 	at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)
  | 	at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)
  | 	at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
  | 	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.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:256)
  | 	at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:214)
  | 	at org.jbpm.svc.Services.close(Services.java:225)
  | 	at org.jbpm.JbpmContext.close(JbpmContext.java:139)
  | 	at org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:144)
  | 	at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:58)
  | INFO - db.DbPersistenceService - 258 - optimistic locking failed
  | INFO - svc.Services - 229 - problem closing service 'persistence': optimistic locking failed
  | WARN - StatefulPersistenceContext.ProxyWarnLog - 615 - Narrowing proxy to class org.jbpm.graph.node.TaskNode - this operation breaks ==
  | WARN - StatefulPersistenceContext.ProxyWarnLog - 615 - Narrowing proxy to class org.jbpm.graph.node.TaskNode - this operation breaks ==
  | ERROR - instantiation.Delegation - 142 - couldn't load delegation class 'common.processhandlers.DueDateHandler'
  | java.lang.ClassNotFoundException: class 'common.processhandlers.DueDateHandler' could not be found by the process classloader
  | 	at org.jbpm.instantiation.ProcessClassLoader.findClass(ProcessClassLoader.java:118)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  | 	at org.jbpm.instantiation.Delegation.instantiate(Delegation.java:140)
  | 	at org.jbpm.instantiation.Delegation.getInstance(Delegation.java:125)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.instantiation.Delegation$$EnhancerByCGLIB$$87bad03b.getInstance(<generated>)
  | 	at org.jbpm.graph.def.Action.execute(Action.java:121)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$322143d.execute(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.taskmgmt.def.Task$$EnhancerByCGLIB$$b38133b8.executeAction(<generated>)
  | 	at org.jbpm.job.Timer.execute(Timer.java:56)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.job.Job$$EnhancerByCGLIB$$7970239a.execute(<generated>)
  | 	at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:164)
  | 	at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | ERROR - instantiation.Delegation - 165 - couldn't instantiate delegation class 'common.processhandlers.DueDateHandler'
  | java.lang.NullPointerException
  | 	at org.jbpm.instantiation.FieldInstantiator.newInstance(FieldInstantiator.java:105)
  | 	at org.jbpm.instantiation.FieldInstantiator.instantiate(FieldInstantiator.java:48)
  | 	at org.jbpm.instantiation.Delegation.instantiate(Delegation.java:163)
  | 	at org.jbpm.instantiation.Delegation.getInstance(Delegation.java:125)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.instantiation.Delegation$$EnhancerByCGLIB$$87bad03b.getInstance(<generated>)
  | 	at org.jbpm.graph.def.Action.execute(Action.java:121)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$322143d.execute(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.taskmgmt.def.Task$$EnhancerByCGLIB$$b38133b8.executeAction(<generated>)
  | 	at org.jbpm.job.Timer.execute(Timer.java:56)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.job.Job$$EnhancerByCGLIB$$7970239a.execute(<generated>)
  | 	at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:164)
  | 	at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | ERROR - def.GraphElement - 275 - action threw exception: null
  | java.lang.NullPointerException
  | 	at org.jbpm.graph.def.Action.execute(Action.java:122)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$322143d.execute(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.taskmgmt.def.Task$$EnhancerByCGLIB$$b38133b8.executeAction(<generated>)
  | 	at org.jbpm.job.Timer.execute(Timer.java:56)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.job.Job$$EnhancerByCGLIB$$7970239a.execute(<generated>)
  | 	at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:164)
  | 	at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | WARN - job.Timer - 62 - timer action threw exception
  | org.jbpm.graph.def.DelegationException
  | 	at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:387)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.def.ProcessDefinition$$EnhancerByCGLIB$$c4ed9d31.raiseException(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:378)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.node.TaskNode$$EnhancerByCGLIB$$45bbca9f.raiseException(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:378)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:281)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.taskmgmt.def.Task$$EnhancerByCGLIB$$b38133b8.executeAction(<generated>)
  | 	at org.jbpm.job.Timer.execute(Timer.java:56)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.job.Job$$EnhancerByCGLIB$$7970239a.execute(<generated>)
  | 	at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:164)
  | 	at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | Caused by: java.lang.NullPointerException
  | 	at org.jbpm.graph.def.Action.execute(Action.java:122)
  | 	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:597)
  | 	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  | 	at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$322143d.execute(<generated>)
  | 	at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
  | 	... 15 more
  | 


The class loader won't find the action to execute for the timers while the class is present in the application.

I tried many things but couldn't find a solution to this problem.


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

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



More information about the jboss-user mailing list