3

私は TimerService で動作するアプリケーションを持っています。特定のタスクを実行するためにいくつかのタイマーを作成しています。正常に動作しています。ただし、タイムアウトの遅延に気付きました。タイムアウト「A」を 10 分ごとに実行するようにスケジュールし、別の「B」を 3 分ごとに実行するようにスケジュールしました。「A」の実行に 5 分かかる場合、「B」は「A」の終了後にのみ実行されるため、2 分間の遅延が発生します。これは問題です。準備が整っていないためです。私の質問は、TimerService を同時に実行する方法があるかどうかです。私が使用しているコードは以下のとおりです。助けていただければ幸いです。

スケジュール作成:

// Every schedule extend from this class.
public abstract class Schedule {
@Resource
private TimerService timerService;

public void start() {
        TimerConfig timerConfig = new TimerConfig();
        timerConfig.setInfo(name);
        timerConfig.setPersistent(false);
        timerService
                .createCalendarTimer(this.calendarSchedule, timerConfig);
}

}

スケジュールの実装:

@Named
@Stateless 
public class MyScheduleEJB extends Schedule {
   @Timeout
   public void timeout(Timer timer) {
    // do the work
   }
 }
4

2 に答える 2

3

これは、アプリケーション サーバーにおける非常に特殊な状況です。しかし、他の誰かが同じ問題を抱えている場合、Websphere には、タイマー プールが使用するスレッド数を示す構成があります (他の AS についてはわかりません)。デフォルトは 1 のみです。そのため、同時に実行されませんでした。構成:WAS 構成

于 2013-07-16T19:44:45.013 に答える