JBPM 3.2.10 SP3 with seam 2.3.1 example example for Scheduled Job functionality
sreenathac Dec 22, 2015 11:34 AMHi All,
I have upgraded my application from Sean 2.2.0 to Seam 2.3.1. In seam 2.2.0 I am using scheduled jobs which will run hourly, daily, weekly and monthly based on the configuration.
Earlier I had the below configuration in **jbpm.cfg.xml**
<jbpm-configuration>
<jbpm-context>
<service name="persistence">
<factory>
<bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled"><true/></field>
</bean>
</factory>
</service>
<service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
</jbpm-context>
<string name="resource.mail.templates" value="jbpm.mail.templates.xml" />
<string name='resource.mail.properties' value='jbpm.mail.properties' />
<string name='jbpm.mail.from.address' value='eemAdmin@noReply' />
<string name='jbpm.mail.class.name' value='com.harasoftware.eem.bpm.mail.EmailActionHandler' />
<bean name='jbpm.mail.address.resolver' class='com.harasoftware.eem.bpm.mail.EmailAddressResolver' singleton='true' />
<bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
<field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
<field name="name"><string value="JbpmJobExecutor" /></field>
<field name="nbrOfThreads"><int value="1" /></field>
<field name="idleInterval"><int value="5000" /></field>
<field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
<field name="historyMaxSize"><int value="20" /></field>
<field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
<field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
<field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
</bean>
</jbpm-configuration>
After upgrading to seam 2.3.1 observed that the jobs was not scheduling. To resolve this issue I have changed the configuration for service "persistence" to
<service name="persistence">
<factory>
<bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled"><true/></field>
</bean>
</factory>
</service>
Now the job was scheduling, but it is throwing an exception because of which my JSF page is navigating to error page. It is throwing the below exception when the job is scheduling.
20:07:06,181 WARN [org.hibernate.engine.internal.StatefulPersistenceContext] (JbpmJobExecutor@10.182.164.243:Executor-1) HHH000179: Narrowing proxy to class org.jbpm.graph.node.State - this operation breaks ==
20:07:06,205 INFO [org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl] (JbpmJobExecutor@10.182.164.243:Executor-1) HHH000106: Forcing container resource cleanup on transaction completion
20:07:06,216 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (JbpmJobExecutor@10.182.164.243:Executor-1) SQL Error: 0, SQLState: null
20:07:06,228 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (JbpmJobExecutor@10.182.164.243:Executor-1) The result set is closed.
20:07:06,326 WARN [org.hibernate.engine.loading.internal.LoadContexts] (JbpmJobExecutor@10.182.164.243:Executor-1) HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@40b7534e<rs=oracle.jdbc.driver.OracleResultSetImpl@7bd1b257>
20:07:06,326 WARN [org.hibernate.engine.loading.internal.CollectionLoadContext] (JbpmJobExecutor@10.182.164.243:Executor-1) HHH000160: On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries
20:07:06,327 SEVERE [org.jbpm.job.executor.JobExecutorThread] (JbpmJobExecutor@10.182.164.243:Executor-1) failed to execute Timer(onceOnlySchedule): org.jbpm.graph.def.DelegationException: no applicable exception handler found
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:368) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_11]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_11]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_11]
at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0_11]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:192) [hibernate-core-4.2.0.jar:4.2.0.Final]
at org.jbpm.graph.def.ProcessDefinition_$$_jvst745_153.raiseException(ProcessDefinition_$$_jvst745_153.java) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:362) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:283) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_11]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_11]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_11]
at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0_11]
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:192) [hibernate-core-4.2.0.jar:4.2.0.Final]
at org.jbpm.graph.node.State_$$_jvst745_17b.executeAction(State_$$_jvst745_17b.java) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at org.jbpm.job.Timer.execute(Timer.java:56) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:149) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:51) [jbpm-jpdl.jar:3.2.10.SP3_seam2]
Caused by: org.hibernate.exception.GenericJDBCException: could not initialize a collection:
Please let me know if I am missing anything. Also let me know if I can found some example for Seam 2.3.1 with JBPM scheduled jobs.