<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to execute two stateful cron jobs(java classes) simultaneously? in Alfresco Forum</title>
    <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115662#M32078</link>
    <description>&lt;P&gt;Thanks Abhinav for your reply.&lt;/P&gt;&lt;P&gt;This time I have extended the java(job) classes with&amp;nbsp;&lt;EM&gt;AbstractScheduledLockedJob, &lt;/EM&gt;the timer job are executing but the problem still prevails&lt;EM&gt;.&amp;nbsp;&lt;/EM&gt;The jobs are not running simultaneously, when I comment the entry of one of the job's context file in module-context.xml the other job runs and vice versa.&lt;/P&gt;&lt;P&gt;I am sharing the context files of both the jobs below along with the cron expressions that I have used to trigger the jobs.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Job1:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="abcJob" class="org.springframework.scheduling.quartz.JobDetailBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobClass"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;com.vil.jobs.ABCJob&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDataAsMap"&amp;gt;&lt;BR /&gt;&amp;lt;map&amp;gt;&lt;BR /&gt;&amp;lt;entry key="serviceRegistry"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ServiceRegistry" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="searchService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="SearchService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="nodeService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NodeService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="actionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ActionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="transactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="TransactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="namespaceService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NamespaceService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="globalProperties"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="global-properties" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="jobLockService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="jobLockService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="TransactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="transactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/map&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="customJobTrigger" class="org.alfresco.util.CronTriggerBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDetail"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="abcJob" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="scheduler"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="schedulerFactory" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="cronExpression"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${abcJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="startDelay"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${delayabc.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/beans&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Job2:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="pqrJob" class="org.springframework.scheduling.quartz.JobDetailBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobClass"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;com.vil.jobs.PQRJob&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDataAsMap"&amp;gt;&lt;BR /&gt;&amp;lt;map&amp;gt;&lt;BR /&gt;&amp;lt;entry key="serviceRegistry"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ServiceRegistry" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="searchService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="SearchService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="nodeService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NodeService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="actionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ActionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="transactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="TransactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="namespaceService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NamespaceService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="globalProperties"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="global-properties" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="jobLockService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="jobLockService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;BR /&gt;&amp;lt;/map&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="customJobTrigger" class="org.alfresco.util.CronTriggerBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDetail"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="pqrJob" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="scheduler"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="schedulerFactory" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="cronExpression"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${pqrJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="startDelay"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${delaypqrJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/beans&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;CronExpressions in properties File -&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;delaypqrJob.cron.expression=180000&lt;BR /&gt;delayabcJob.cron.expression=300000&lt;BR /&gt;pqrJob.cron.expression=0 0/5 * 1/1 * ? * (5 minutes)&lt;BR /&gt;abcJob.cron.expression=0 0/2 * 1/1 * ? *&amp;nbsp;(2 minutes)&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 21 Nov 2019 11:39:16 GMT</pubDate>
    <dc:creator>Sanjana_17</dc:creator>
    <dc:date>2019-11-21T11:39:16Z</dc:date>
    <item>
      <title>How to execute two stateful cron jobs(java classes) simultaneously?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115660#M32076</link>
      <description>&lt;P&gt;I have created two timer jobs with job classes implementing&amp;nbsp;org.quartz.StatefulJob. The entry of their respective cron expressions has been done in the alfresco-global.properties file.&lt;/P&gt;&lt;P&gt;The issue is only one job runs despite the execution time given in properties file as different for both the jobs.I am new to alfresco, will be grateful if someone can help to solve this. I have followed the link mentioned below to create the jobs:&lt;/P&gt;&lt;P&gt;&lt;A href="http://javaworld-abhinav.blogspot.com/2015/08/creating-scheduled-job-in-alfresco.html" target="_blank" rel="noopener nofollow noreferrer"&gt;http://javaworld-abhinav.blogspot.com/2015/08/creating-scheduled-job-in-alfresco.html&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Nov 2019 04:18:45 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115660#M32076</guid>
      <dc:creator>Sanjana_17</dc:creator>
      <dc:date>2019-11-20T04:18:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to execute two stateful cron jobs(java classes) simultaneously?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115661#M32077</link>
      <description>&lt;P&gt;If you have configured the crons appropriately then it should execute all the jobs unless there is any error which is preventing the job to start.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, i would suggest to implement your jobs using:&amp;nbsp;&lt;A href="https://dev.alfresco.com/resource/docs/java/org/alfresco/schedule/AbstractScheduledLockedJob.html" target="_blank" rel="noopener nofollow noreferrer"&gt;https://dev.alfresco.com/resource/docs/java/org/alfresco/schedule/AbstractScheduledLockedJob.html&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This implementation is cluster aware, so if your application is running in cluster, you won't face conflicts.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The link you shared is talking about this Abstract class as well. Check this section : "&lt;EM&gt;AbstractScheduledLockedJob (Cluster Aware Job Scheduler Implementation)"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Your job processor would look something like this:&amp;nbsp;&lt;/U&gt;&lt;/P&gt;

&lt;PRE&gt;package com.abhinav.jobs;&lt;BR /&gt;import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.schedule.AbstractScheduledLockedJob;
import org.alfresco.service.transaction.TransactionService;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class &lt;SPAN&gt;CustomClusterAwareJobProcessor &lt;/SPAN&gt;extends &lt;STRONG&gt;AbstractScheduledLockedJob&lt;/STRONG&gt; {

	private static final Log LOG = LogFactory.getLog(&lt;SPAN&gt;CustomClusterAwareJobProcessor&lt;/SPAN&gt;.class);

	private TransactionService transactionService;
	
	@Override
	public void executeJob(final JobExecutionContext jobCtx)
			throws JobExecutionException {&lt;BR /&gt;                LOG.info("&lt;SPAN&gt;CustomClusterAwareJobProcessor started...&lt;/SPAN&gt;");
		try {
			// Run as system user since this job is user independent hence
			// permission is required on repository
			AuthenticationUtil.setRunAsUserSystem();
			final RetryingTransactionCallback&amp;lt;Object&amp;gt; txnWork = new RetryingTransactionCallback&amp;lt;Object&amp;gt;() {
				public Object execute() throws Exception {
					//TODO:: YOUR CUSTOM CODE
				}
			};
			transactionService.getRetryingTransactionHelper().doInTransaction(txnWork);	&lt;BR /&gt;                        LOG.info("&lt;SPAN&gt;CustomClusterAwareJobProcessor finished.&lt;/SPAN&gt;"); 
		} catch (Exception excp) {
			LOG.error("Exception occurred while processing job", excp);
		}
	}

	public void setTransactionService(final TransactionService transactionService) {
		this.transactionService = transactionService;
	}
}&lt;/PRE&gt;
&lt;P&gt;&lt;U&gt;Update the context something like:&lt;/U&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;bean id="customClusterAwareJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;property name="jobClass"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;value&amp;gt;com.abhinav.jobs.&lt;SPAN&gt;CustomClusterAwareJobProcessor&lt;/SPAN&gt;&amp;lt;/value&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/property&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;!--In the map, you can pass all the services you would need during the job processing--&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;property name="jobDataAsMap"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;map&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;entry key="transactionService"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;ref bean="transactionService"/&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/entry&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;!--&lt;I&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;JobLockService used to aquire the lock on jobs while they are&amp;nbsp;&lt;/I&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;I&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp; &amp;nbsp; being processed to avoid other thread to modify the jobs state&lt;/I&gt;--&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;entry key="jobLockService"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;ref bean="jobLockService"/&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/entry&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/map&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/property&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/bean&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;lt;bean id="customClusterAwareJobTrigger" class="org.alfresco.util.CronTriggerBean"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;property name="jobDetail"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;ref bean="customClusterAwareJobDetail" /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/property&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;property name="scheduler"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;ref bean="schedulerFactory" /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/property&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;property name="cronExpression"&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;!--&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;I&gt;Provided the cron expession in alfresco-global.propeties file&lt;/I&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;--&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;value&amp;gt;${customjob.cron.expression}&amp;lt;/value&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/property&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;lt;/bean&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;&lt;STRONG&gt;In alfresco-global.properties:&amp;nbsp;&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;U&gt;&lt;STRONG&gt;#This expression will execute the job every 1 minute&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;customjob.cron.expression=0 0/1 * 1/1 * ? *&lt;/EM&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You can configure the cron as per your requirement.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Wed, 20 Nov 2019 14:51:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115661#M32077</guid>
      <dc:creator>abhinavmishra14</dc:creator>
      <dc:date>2019-11-20T14:51:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to execute two stateful cron jobs(java classes) simultaneously?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115662#M32078</link>
      <description>&lt;P&gt;Thanks Abhinav for your reply.&lt;/P&gt;&lt;P&gt;This time I have extended the java(job) classes with&amp;nbsp;&lt;EM&gt;AbstractScheduledLockedJob, &lt;/EM&gt;the timer job are executing but the problem still prevails&lt;EM&gt;.&amp;nbsp;&lt;/EM&gt;The jobs are not running simultaneously, when I comment the entry of one of the job's context file in module-context.xml the other job runs and vice versa.&lt;/P&gt;&lt;P&gt;I am sharing the context files of both the jobs below along with the cron expressions that I have used to trigger the jobs.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Job1:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="abcJob" class="org.springframework.scheduling.quartz.JobDetailBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobClass"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;com.vil.jobs.ABCJob&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDataAsMap"&amp;gt;&lt;BR /&gt;&amp;lt;map&amp;gt;&lt;BR /&gt;&amp;lt;entry key="serviceRegistry"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ServiceRegistry" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="searchService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="SearchService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="nodeService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NodeService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="actionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ActionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="transactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="TransactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="namespaceService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NamespaceService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="globalProperties"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="global-properties" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="jobLockService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="jobLockService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="TransactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="transactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/map&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="customJobTrigger" class="org.alfresco.util.CronTriggerBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDetail"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="abcJob" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="scheduler"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="schedulerFactory" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="cronExpression"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${abcJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="startDelay"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${delayabc.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/beans&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Job2:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="pqrJob" class="org.springframework.scheduling.quartz.JobDetailBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobClass"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;com.vil.jobs.PQRJob&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDataAsMap"&amp;gt;&lt;BR /&gt;&amp;lt;map&amp;gt;&lt;BR /&gt;&amp;lt;entry key="serviceRegistry"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ServiceRegistry" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="searchService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="SearchService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="nodeService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NodeService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="actionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="ActionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="transactionService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="TransactionService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="namespaceService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="NamespaceService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="globalProperties"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="global-properties" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;entry key="jobLockService"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="jobLockService" /&amp;gt;&lt;BR /&gt;&amp;lt;/entry&amp;gt;&lt;BR /&gt;&amp;lt;/map&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;bean id="customJobTrigger" class="org.alfresco.util.CronTriggerBean"&amp;gt;&lt;BR /&gt;&amp;lt;property name="jobDetail"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="pqrJob" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="scheduler"&amp;gt;&lt;BR /&gt;&amp;lt;ref bean="schedulerFactory" /&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="cronExpression"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${pqrJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;property name="startDelay"&amp;gt;&lt;BR /&gt;&amp;lt;value&amp;gt;${delaypqrJob.cron.expression}&amp;lt;/value&amp;gt;&lt;BR /&gt;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;lt;/bean&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/beans&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;CronExpressions in properties File -&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;delaypqrJob.cron.expression=180000&lt;BR /&gt;delayabcJob.cron.expression=300000&lt;BR /&gt;pqrJob.cron.expression=0 0/5 * 1/1 * ? * (5 minutes)&lt;BR /&gt;abcJob.cron.expression=0 0/2 * 1/1 * ? *&amp;nbsp;(2 minutes)&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2019 11:39:16 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115662#M32078</guid>
      <dc:creator>Sanjana_17</dc:creator>
      <dc:date>2019-11-21T11:39:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to execute two stateful cron jobs(java classes) simultaneously?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115663#M32079</link>
      <description>&lt;P&gt;I noticed that you have defined same cron bean id (&lt;STRONG&gt;customJobTrigger&lt;/STRONG&gt;) for both jobs which is not correct.&amp;nbsp; And looking at your bean definitions, it seems you have two different job-context.xml files.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;lt;bean id="&lt;FONT color="#FF0000"&gt;customJobTrigger&lt;/FONT&gt;" class="org.alfresco.util.CronTriggerBean"&amp;gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;I would suggest to change it like:&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Job1 cronTrigger:&amp;nbsp;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE&gt;&amp;lt;bean id="&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;customJobTriggerABC&lt;/STRONG&gt;&lt;/FONT&gt;" class="org.alfresco.util.CronTriggerBean"&amp;gt;
&amp;lt;property name="jobDetail"&amp;gt;
&amp;lt;ref bean="abcJob" /&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="scheduler"&amp;gt;
&amp;lt;ref bean="schedulerFactory" /&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="cronExpression"&amp;gt;
&amp;lt;value&amp;gt;${abcJob.cron.expression}&amp;lt;/value&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="startDelay"&amp;gt;
&amp;lt;value&amp;gt;${delayabc.cron.expression}&amp;lt;/value&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Job2 cronTrigger:&amp;nbsp;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE&gt;&amp;lt;bean id="&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;customJobTriggerPQR&lt;/STRONG&gt;&lt;/FONT&gt;" class="org.alfresco.util.CronTriggerBean"&amp;gt;
&amp;lt;property name="jobDetail"&amp;gt;
&amp;lt;ref bean="pqrJob" /&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="scheduler"&amp;gt;
&amp;lt;ref bean="schedulerFactory" /&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="cronExpression"&amp;gt;

&amp;lt;value&amp;gt;${pqrJob.cron.expression}&amp;lt;/value&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;property name="startDelay"&amp;gt;
&amp;lt;value&amp;gt;${delaypqrJob.cron.expression}&amp;lt;/value&amp;gt;
&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;&lt;/PRE&gt;
&lt;P&gt;Can you explain the requirement as well?&lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2019 13:51:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115663#M32079</guid>
      <dc:creator>abhinavmishra14</dc:creator>
      <dc:date>2019-11-21T13:51:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to execute two stateful cron jobs(java classes) simultaneously?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115664#M32080</link>
      <description>&lt;P&gt;Thank you for the revert.&lt;/P&gt;&lt;P&gt;I have updated the job-context.xml files with the proper bean ids as suggested by you and it worked for all my cron jobs.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks! again&amp;nbsp;&lt;img id="smileyvery-happy" class="emoticon emoticon-smileyvery-happy" src="https://connect.hyland.com/i/smilies/16x16_smiley-very-happy.png" alt="Smiley Very Happy" title="Smiley Very Happy" /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Nov 2019 06:46:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/how-to-execute-two-stateful-cron-jobs-java-classes/m-p/115664#M32080</guid>
      <dc:creator>Sanjana_17</dc:creator>
      <dc:date>2019-11-22T06:46:21Z</dc:date>
    </item>
  </channel>
</rss>

