2012-01-06 7 views
0

これは愚かな質問かもしれませんが、コンテナ全体のすべてのタイマーを管理するためにEJBを専用にすることは可能でしょうか?私はこれがどのように達成されるのか分かりませんが、私はJava EEで経験した人ではありませんが、個々のセッションBeanのラインに沿ってこのタイマーBeanにアクセスすることを考えています。セッションBeanは関数ジョブ自体のメタデータと一緒にポインタ?タイマーBeanの上には、最低でも、実行中のジョブとその現在のステータスを確認するためのGUIまたは管理フレームワークを構築することが可能です。EJB 3.1タイマを管理する専用のEJBを作成することはできますか?

基本的に、EJB 3.1タイマを代わりに使用している間に、Quartzの機能のいくつか(停止、開始、変更できるジョブ)が必要です。これが遠隔可能性であるかどうかを判断しようとしています。

編集:問題の重要な点は、タイマーサービスがコンテナ全体のタイマーをすべて取得できないことです。私の考えは、すべてのタイマーを管理できる特別なタイマーBean内にすべてのタイマーを作成することです。問題はどのようにこれを行うか、またはこれが可能かどうかわかりません。私は関数のポインタを(とにかくあなたがそれらのJavaにとにかく得ることができるように)タイミングパラメータと共にタイマーのビーンに渡すと演奏しましたが、これは本当に総体のようです。

+0

は、あなたは、JBossまたはWebSphereを使用しています:

@Resource private SessionContext sessionContext; 

次に、例として、あなたはすべてのタイマーを反復得ることができますか? JavaEE仕様にはそのような機能はありません。これが可能であれば、コンテナ固有の解決策を検討する必要があります。 –

+0

WebSphere。タグが付けられたJBossは、AS特有の問題ではありません。 –

答えて

0

あなたはおそらくjavax.ejb.TimerServiceを探しています。あなたの豆に注入:

TimerService timerService = sessionContext.getTimerService(); 
for (Timer timer : timerService.getTimers()) { 
    timer.cancel(); //etc. 
} 
+0

1つのアプリケーション固有のもので、コンテナにデプロイされている他のアプリケーションには適用されません。 –

+1

これは、単一のEJB Beanに固有です。同じアプリケーションで他のBeanによって作成されたタイマーを見ることはできません。 –

+0

@AndreRodriguesはい、単一のBeanを使用してアプリケーション内のタイマーを管理することはできますが、提供された回答は、ユーザーが問題に言及しているコンテナにデプロイされている他のアプリケーション全体で役に立ちません。 –