Используя CronTriggerBean, я создал два триггера (скажем, триггер A и B) для вызова двух разных действий. Мы разместили наш проект как .war на 2 серверах. Я использую JobStoreTX для кластеризации. Проблема, с которой я столкнулся, заключается в том, что я хочу сгруппировать только один триггер, т.е. триггер A и B не должны быть сгруппированы. Есть ли способ указать через код, какой триггер должен быть кластеризован. Мой код продолжается, как показано ниже.
<bean id="shedulerJobStoreTX" class="org.quartz.impl.jdbcjobstore.JobStoreTX>
<property name="driverDelegateClass" value="org.quartz.impl. jdbcjobstore.oracle.OracleDelegate">
<property name="dataSource" value ="jndiDS"/>
<property name="tablePrefix" value="someschemaName"/>
<property name="isClustered" value="true"/>
<property name="clusterCheckinInterval" value="${someValue}"/>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="clusterCronTrigger"/>
</list>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="runAppJob" />
<property name="cronExpression" value="${someTimeValue1}"/>
</bean>
<bean id="clusterCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="runClusterJob" />
<property name="cronExpression" value="${someTimeValue2}"/>
</bean>
Привет, я усовершенствовал код, и вышеупомянутая проблема не возникает. PFB код для того же самого.
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="clusterCronTrigger"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.jobStore.isClustered">false</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key ="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.
JobStoreTX </prop>
<prop key="org.quartz.jobStore.tablePrefix">schemaName</prop>
<prop key="org.quartz.jobStore.driverDelegateClass"> org.quartz.impl.jdbcjobstore.oracle.OracleDelegate</prop>
<prop key="org.quartz.jobStore.selectWithLockSQL"> SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME= ?</prop>
</props>
</property>
<property name="dataSource" ref="fsmJndiDataSource"/>
Но проблема при выполнении приведенного выше кода заключается в том, что я получаю следующее исключение, когда кварц пытается получить блокировку..."Ошибка вызова метода инициализации; вложенным исключением является org.quartz.SchedulerConfigException: Ошибка произошла во время восстановление задания. [См. вложенное исключение: org.quartz.impl.jdbcjobstore.LockException: Ошибка при получении блокировки строки БД: ORA-00942: таблица или представление не существует"