2012-08-24 10 views
6

私は200msごとに起動し、簡単なことをする簡単なスケジュールされたタスクを実行する必要があります。Java EE 5(JBoss)プラットフォームでスケジュールされたタスクを開始する適切な方法は何ですか?

Executors.newSingleThreadScheduledExecutor()は、JBossでスケジュールされたエグゼキュータサービスを取得する正しい方法ですか?

Java EEプラットフォームでの管理されていないスレッドの作成はお勧めしません。このスレッドはアンマネージになります。

一方、私はこのような単純なことのためにMBeans等を宣言したくありません。

編集

ありorg.jboss.resource.work.JBossWorkManagerとして何かがあるが、私はスケジュールされた作業の例を見つけることができません。

+0

万が一春を利用していますか? – Eugene

+0

いいえ、それはちょうどJava EE 5 + Seam(旧) –

答えて

4

Executors.newSingleThreadScheduledExecutor()を呼び出すのはひどいわけではありませんが、EEコンテナでは避けてください。 Java EE 5 use TimeoutServiceで:

@Stateless 
public class TimerSessionBean implements TimerSession { 
    @Resource 
    TimerService timerService; 

    public void startTimer() { 
     Timer timer = timerService.createTimer(200, "Created new timer"); 
    } 

    @Timeout 
    public void timeout(Timer timer) { 
     logger.info("Timeout occurred"); 
    } 
} 

のJava EE 6では、あなたは便利な@Schedule annotationを持っています。

+0

EJBなしでそれを行う方法はありませんか? (私はJBoss 4.xで、Java EE 6への道のり) –

+0

@PiotrGwiazda:['TimerService'](http://docs.oracle.com/java/6/api/javax/ejb/TimerService.html) )がEJB 2.1で導入されたので、JBoss 4.xでうまくいくはずです。 –

関連する問題