XML コンテンツの Web サービスを定期的にポーリングする非常に長時間実行されるタスクがあります。これらの定期的な実行に Scheduled executor を使用していますが、すべて正常に動作します。
ScheduledExecutorServiceの JavaDoc のscheduleAtFixedRate には、
- ... タスクの実行で例外が発生した場合、後続の実行は抑制されます ...*
これは、未処理の例外の場合、アプリケーションが実行中であっても、事実上停止状態にあり、何もしないことを明確に意味します。
タスクの実行が停止しないようにしたいのですが、すべての例外をキャッチする以外に、これに対処する方法はありますか?
@Override
public void run() {
try {
// fetch xml feed from network,
// parse the feed and dump to file the json.
} catch (Exception e) {
logger.error("Unhandled exception " + e);}
}
}