3

Web アプリケーションを WebSphere 6.0 で実行しており、いくつかの Quartz スケジューラ タスクもあります。hibernate.cfg.xml でそのようなルックアップを行うと:

<property name="jta.UserTransaction">java:comp/UserTransaction</property>

私の Web アプリケーションでは正常に動作しますが、Quartz タイマーによって開始されたスレッドは、そのルックアップ文字列を使用して DB にアクセスできません。しかし、私が使用する場合

<property name="jta.UserTransaction">jta/usertransaction</property>

それなら逆です。クオーツ タイマーは動作しますが、Web アプリケーション内でルックアップを実行できません。

両方を同じ休止状態構成で動作させる方法はありますか?

EDT: これが私の Quartz.properties ファイルです。ちなみにQuartzのバージョンは1.5.2です。

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one


org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount =  5
org.quartz.threadPool.threadPriority = 4

org.quartz.jobStore.misfireThreshold = 5000

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
4

2 に答える 2

0

Quartz.properties でのトランザクション管理が不足していると思います。このようなもの:

org.quartz.scheduler.userTransactionURL=jta/usertransaction
org.quartz.scheduler.wrapJobExecutionInUserTransaction=true

アイデアは、Quartz にジョブ実行をトランザクションでラップし、どこでそれを取得するかを指示することです。

于 2014-02-27T14:49:25.667 に答える
0

これがあなたに関係があるかどうかはわかりませんが、最近同様の問題が発生しました。私の問題は、リモート アクセスとローカル アクセスであり、設計を少し変更して、@Local および @Remote アノテーションにインターフェイス名を追加するとうまくいきました。

于 2014-02-27T12:54:25.350 に答える