二つのアプローチ:あなたは自分のBeanでブール値を設定し、それを実行するべきかどうかのブールdiscover()
チェックを持つことができます。これはまだだけ何もしないように、しかし2分毎に呼び出されてdiscover()
につながります。しかし、これは後日、ピックアップするresumeDiscovery()
メソッドを追加することができます。
@Stateless(name="MySchedulerBean)
public class MySchedulerBean
private boolean cancelTimer = false;
public void stopDiscovery() {
this.cancelTimer = true;
}
@Schedule(persistent=false, minute="*/2", hour="*", timezone="GMT"
public void discover() {
if (cancelTimer) {
return;
}
//run discovery
}
}
また、ジョブを処理しているTimerをキャンセルすることもできます。これはより恒久的な解決策です。あなたがいない簡単に、少なくとも...このスケジュールされたEJBを再起動することはできません。すなわち、このようになります。
@Stateless(name="MySchedulerBean)
public class MySchedulerBean
private boolean cancelTimer = false;
public void stopDiscovery() {
this.cancelTimer = true;
}
@Schedule(persistent=false, minute="*/2", hour="*", timezone="GMT"
public void discover(Timer timer) {
if (cancelTimer) {
timer.cancel();
return;
}
//run discovery
}
}
をだから今、あなたは発見を停止することを決定した場合、検出を実行しようとする次回は、このBeanのタイマーが良いためにキャンセルされます。