2011-12-30 20 views
3

私はEJB 3でタイマを使用しています。私は以下の要件を満たしています。EJB 3で同期タイマーを作成する方法は?

例:有効期限が10分のタイマーを作成したとします。最初のタイマーが開始され、より多くの時間(たとえば15分)がかかるタスクが実行されています。一方、サーバーは同じ名前の別のタイマーを開始し、有効期限に達しています。既存のタイマーがまだ稼働している場合は、別のタイマーを開始するようにサーバーを制限したい。

また、すべてのタイマーを停止したいのですが、timer.getInfo()を使用してタイマーの名前を取得すると、アプリケーションがハングします。

この問題の解決にお役立てください。

+1

コードを投稿する必要があります。それは人々があなたを助けるのに非常に役立ちます! – jbranchaud

答えて

2

あなたが作成したものは、以前の動作に関係なく、一定の間隔の後に実行を続けるインターバルタイマー/スケジューラのようです。

タイマーを手動で作成し、@ StartupとマークされたBeanで作成してください。アプリケーションの起動時に初期化します。hereをさらに参照できます。

//--- 

    @Timeout 
    public void execute(Timer timer){ 

     /* 
      -- Time consuming computation 
     */ 

     createTimer(sec, min, hour) 
    } 

//--- 

したがって、アプリケーションの起動時に作成されると、タイマーのチェーンが作成されます。したがって、タスクが通常よりも時間がかかる場合でも、前のタイマーの完了/終了後にのみ次のタスクが作成されます。

関連する問題