0

J2EE コンテナーで実行したいバックグラウンド ジョブについて、スタートアップ サーブレットを作成し、Timer Service API を使用してマネージド タイマーを作成するという提案を見つけました ( J2EE で時間指定バッチ プロセスに使用できるツールについての回答で) ? )。

タイマーを作成するには、タイマー API を実装するコンテキストが必要です。(

Servlet クラスでは、init メソッドをオーバーライドしますが、それは ServletContext にしかアクセスできず、SessionContext にはアクセスできません。ServletContext にはタイマーを作成するメソッドがないため、ここで立ち往生しています。

サーブレットの起動コードで J2EE タイマー サービスにアクセスするにはどうすればよいですか?

4

2 に答える 2

2

タイマージョブを聞くたびに、これはJavaEEアプリサーバーから分離する必要があると思わざるを得ません。Quartzのようなもの、オペレーティングシステムのスケジュールされたタスク、またはAutoSysのようなバッチマネージャーを使用できますが、サーブレットに埋め込むことは、サーブレットの誤用のように思えます。

Java EE 5コンテナには、EJBであるTimerServiceがあります。おそらくこれはあなたがそれを整理するのに役立つでしょう。

于 2009-06-21T15:07:51.263 に答える
1

サーブレットのスタートアップ コード (再デプロイのたびに実行される) を使用する代わりに、EJB のスタートアップでタイマーを開始する方がクリーンであることがわかりました。EJB 3.1 と Singleton EJB を使用すると、これがはるかに少ないコードで可能になります。

http://blogs.oracle.com/kensaks/entry/application_startup_shutdown_callbacks

于 2010-03-24T20:03:56.140 に答える