Java EE 6 TimerService を使用して、実行時間の長いタスク (約 30 分) を実行しています。このタスクは、ビジネス ロジックが約 5 秒ごとにキャンセルされる可能性があるため、簡単に中断される可能性があります。
ここで問題は、実行されたメソッド内でアプリケーションをアンデプロイするイベントを取得する方法です。これにより、Java EE コンテナーでの再デプロイおよびアンデプロイの場合に実行をキャンセルできます。
例:
@Singleton
public class AnyClass {
@Schedule(hour = "9", minute="17")
public void service() {
for(i = 1000; i < 1000; i++) {
doSomethingForAbout5Seconds();
// here I want to cancel the execution in
// case of undeployment of the apllication
}
}
}