ServletContextListener
起動時にいくつかのリソースをロードするクラスを実装しています。
これらのリソースは、ロジックで悪いイベントが発生したときにスタートアップ全体を失敗させたいという意味で、アプリケーションにとって重要です。
ServletContextListener.contextInitialized()
Tomcat の起動全体を停止して失敗させるために、メソッド内から実行できるコマンドはありますか?
指定してみてください:
-Dorg.apache.catalina.startup.EXIT_ON_INIT_FAILURE=true
ランタイムオプションで、公式ドキュメントjava
を引用します。
trueの場合、サーバーの初期化フェーズ中に例外が発生すると、サーバーは終了します。
指定しない場合、デフォルト値のfalseが使用されます。
アップデート:
これをコードで実行したい場合は、System.exit()
機能しますか?
public class FailFastListener implements ServletContextListener {
private static final Logger log = LoggerFactory.getLogger(FailFastListener.class);
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
try {
//initialization
} catch(Exception e) {
log.error("Sooo bad, shutting down", e);
System.exit(1);
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
デコレータパターンを使用すると、既存のリスナーを乱雑にすることなくラップできます。Tomcatがどのように反応するかわからない...