CronTriggerBeanを使用して、2つの異なるアクションを呼び出すための2つのトリガー(トリガーAとBなど)を作成しました。プロジェクトを.warとして2台のサーバーに配置しました。クラスタリングにJobStoreTXを使用しています。私が直面している問題は、1つのトリガーのみをクラスター化したいということです。つまり、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"/>
しかし、上記のコードを実行する際の問題は、クォーツがロックを取得しようとしたときに以下の例外が発生することです... " initメソッドの呼び出しに失敗しました。ネストされた例外はorg.quartz.SchedulerConfigExceptionです:ジョブの回復中に失敗が発生しました。 [ネストされた例外を参照してください:org.quartz.impl.jdbcjobstore.LockException:db行ロックの取得に失敗しました:ORA-00942:テーブルまたはビューが存在しません"