JPAプロバイダーとしてHibernateを備えたQuartz、Springを使用しています。データベースはオラクルです。
ファイルをファイルシステムに書き込み、データベースを詳細で更新する方法があります。このメソッドは、次の 2 つの方法で呼び出すことができます。
- Web サービスの使用
- または、スケジュールされた quatrz ジョブとして。
私はクォーツを次のように設定しました:
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" scope="singleton">
<property name="autoStartup" value="true"/>
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="overwriteExistingJobs" value="true"/>
<property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="transactionManager"/>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.instanceName">FileScheduler</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key="org.quartz.jobStore.misfireThreshold">6000</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">${driverDelegateClass}</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
<prop key="org.quartz.jobStore.isClustered">true</prop>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">5</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
</props>
</property>
</bean>
このメソッドは、Spring マネージド トランザクションを使用しています。
問題は、このメソッドが Quartz スケジューラによって呼び出されたときに、ファイルが作成されてもデータベースが更新されないことです (2 つのテーブルが更新され、1 つのテーブルが挿入されるはずです)。
休止状態の show_SQL も有効にしましたが、スケジューラの場合、update\insert ステートメントはログに記録されません。
ただし、このメソッドが Web サービス要求によって呼び出された場合、これは正常に機能します。ログには update\insert ステートメントも表示されます。
更新 1
私の問題を要約すると、これは私が達成しようとしていることです:
- 従業員テーブルに新しいレコードを作成します。
- employee_id を job_store (quartz) に保存します。
- トリガーが起動されると、クォーツは employee_id を返します
- このキーに基づいて従業員レコードを取得 (ロード) します。
- 従業員にメールを送信
- ステータスが「送信済み」の通知を更新します(ステートメントを挿入)
最後に、すべてのテーブルが更新されることを期待しています。
Quartz がジョブをトリガーすると、ポイント 6 を除いてすべてが機能します。Web サービス呼び出しを使用してこのメソッドを呼び出すと、テーブルが更新されるため、コードは正しいです。
更新 2
使用するコードを更新しました
<prop key="org.quartz.jobStore.class">org.springframework.scheduling.quartz.LocalDataSourceJobStore</prop>
しかし、これも役に立ちません。
助けてください。ありがとう。アディ