2012-01-25 11 views
5

Glassfish 3.1のプロジェクトデプロイですべてのスケジューラ(@Schedule注釈)を無効にする方法
これを行うにはいくつかの設定エントリがありますか?
プロジェクトにスケジューラを持つ約20個のEJBがあります。小さなものをテスト/修正したい場合は、すべての/いくつかのタイマーを開始したくないのです。Glassfish 3.1のすべてのスケジュールを無効にする

+0

EJB 3.1(@docs.oracle.com/javaee/6/api/javax/ejb/Schedule.html#persistent%28%29)に '@ Schedule'アノテーションが追加されていませんか? EJB 3.1または3.0を使用していますか? –

+0

私はEJB 3.1を使用しています – alexblum

答えて

2

、残念ながらあなたの問題を解決するためにいくつかの設定項目がある場合、私は知らないが、は(キャンセル呼び出すことで、そうするprogramatical方法がある)によって提供さタイマー -objectsに -method TimerService

@Stateless 
public class ScheduleCancellation { 

    @Resource 
    private TimerService timerService; 

    @Schedule(second = "0", minute = "*", hour = "*") 
    public void cancelTimers() { 
    System.out.println("cancelTimers()"); 
    for (Timer timer : timerService.getTimers()) { 
     System.out.println("schedule gone!"); 
     timer.cancel(); 
    } 
    } 

    @Schedule(second = "*", minute = "*", hour = "*") 
    public void tick() { 
    System.out.println("tick"); 
    } 
} 

は、この情報がお役に立てば幸い:ここ

は私が唯一の小さなものをテストしたいとき、私は単にプロジェクトに入れてクラスの一例です! :)

+0

getTimer()メソッドは、このBeanに関連付けられているアクティブなタイマーだけを返します。多分、プロジェクトですべてのタイマーを取得し、これらを非アクティブ化することは可能でしょうか? – alexblum

2

TimerService#getTimers()にアクセスすると、この特定のEJBのタイマーだけが返されます。コンテナ内のすべてのタイマーにアクセスするための標準化された方法はありません(実際には、強化要求です:http://java.net/jira/browse/EJB_SPEC-47)。

GlassFish独自のソリューションとフィドルを内部で使用する必要があると思います(可能であれば)。もし私があなただったら私はGlassFish mailing listに頼むだろう。

+0

あなたの提案をありがとう。私はメーリングリストに尋ねます。 – alexblum

+0

Glassfishメールグループの回答は次のとおりです。http://www.java.net/forum/topic/glassfish/glassfish/disabling-all-schedules-glassfish-31 – alexblum

関連する問題