6

Web アプリケーションの起動時に実行する必要がある次のシングルトンがありますが、実行されず、スケジュールされたタスクも実行されません。

@Singleton
@Startup
public class Scheduler {

    private static int count = 0;

    @PostConstruct
    public void onStartup() {
        System.out.println("Initialization success.");
    }

   @Schedule(second="*/10", minute="*", hour="*")
   public void execute() {
      System.out.println("its running count..."+count);
      count++;
   }
}

Glassfish サーバー 3.1.2 を使用しています。

編集

現在、スタートアップ メソッドは実行されていますが、スケジュール メソッドは実行されていません。

4

4 に答える 4

5

Boreded自身の回答にいくつかの質問があったため、別の回答を追加します。

設定によって問題が解決した理由は、true に設定されてpersistence=falseいる場合、永続的なタイマーが既に存在する場合、再作成されないことが原因である可能性がありkeepstateます。

ログに次のように表示されるはずです

INFO: keepstate is true and will not create new auto timers during deployment.

ここでの私の回答(同じ質問に対するRoland Tiefenbrunnerの回答と一緒に)は、問題をある程度うまくカバーしていると思います。

于 2013-03-20T18:57:49.267 に答える
1

同様の問題を抱えている他の人のために、以下を追加すると私の問題が修正されました:

persistent=false

だから私のスケジュール注釈は今です

@Schedule(second="*/10", minute="*", hour="*", persistent=false)
于 2013-03-20T12:36:50.777 に答える