0

[JBoss 6 を使用していますが、この質問はどの JavaEE アプリケーション サーバーにも当てはまると思います]

アプリケーションサーバーは、(とりわけ)非常に長時間実行されるタスク(最大数時間かかる場合があります)を実行することになっています。

タスクは何らかの EJB 関数を呼び出すことによってトリガーされますが、これまでのところ、操作全体がこの関数呼び出し内で実行されているため、EJB トランザクション内で実行されています。このようなトランザクションはすぐにタイムアウトするため、トランザクション タイムアウトを延長するだけでは正しい解決策ではないようです。

全体的なタスクは、ロード/ワーク/ストアの部分に簡単に分割できるため、常にトランザクションを実行するという厳密な要件はないようです。

質問は次のとおりです。これを行う「正しい」方法は何ですか?

4

3 に答える 3

1

ぜひQuartzをご覧ください。これは、特定の間隔でタスクをスケジュールするための素晴らしいツールです。プロジェクトの 1 つで Quartz を使用しましたが、それは素晴らしかったです。私たちのシナリオは、Excel ファイルの形式で投稿から使用されたものから入力を取得し、それらの巨大な Excel を非同期で処理することでした。これには長い時間がかかる可能性がありました。入力を取得して、1 秒後にジョブを実行するようにスケジュールしました。Spring はクォートを使用したジョブ スケジューリングもサポートしており、Jboss にはクォートがあらかじめパッケージ化されています。

于 2013-06-24T08:24:36.837 に答える
1

[私の質問からこれを確認できるかどうかは完全にはわかりませんが、探していた答えが見つかりました]

一部の作業は、WorkManagerによってスケジュールできます。

それに関する記事へのポインタについては、 http://danielveselka.blogspot.de/2012/03/schedule-jobs-with-workmanager.htmlを参照してください。

于 2013-08-22T12:54:38.133 に答える