2

JBoss 7.1.1.Final を使用しています。ここにスタートアップシングルトンがあります。起動時に何かを初期化し、シャットダウン時に自分のものを終了/クリーンアップします。しかし、今では、終了後 1 秒間、やりたいことが何でもできることがわかりました。1 秒後にはアプリケーションがすぐに離れてしまい、実際のクリーンアップには 1 秒では不十分な場合があります。

コード:

@Singleton
@Startup
public class ShutdownTest {

  @PostConstruct
  public void initialize() {
    LOG.info("Initialization");
  }

  @PreDestroy
  public void terminate() {
    for(;;) {
      LOG.info("loop in terminate...");
      Tools.sleepQuietly(100); // just sleeps for 100 milliseconds
    }
  }

}

このクラスは起動時に初期化を報告しますが、終了時に 10 倍の出力が得られます。この後、JBoss は停止します。

一部の PreDestroy メソッドがまだ実行されている場合でも、JBoss が自分自身を強制終了するまで、この時間をどのように構成できますか?

現在、Eclipse から JBoss を起動および停止しています (ポーラーは Web ポートに設定されています)。

4

1 に答える 1

0

シャットダウン イベントで JBoss 7 でこれを行う方法はありません ( JBoss / WildFly チームのTomaz Cerarのこの回答に基づく)。

Windowsでは、これを行う方法がないことを確認できます(Linuxではそうすると思います)。

サーバーをシャットダウンする前にアプリケーションを停止すると、機能することがわかりました。つまり、Web コンソールにログオンし、ランタイム (右上のタブ) -> デプロイメントの管理 (メニュー) -> アプリケーションの「無効化」ボタンに移動します。

WildFly 8 では、シャットダウンの「タイムアウト」オプションを取得します。使い方はこちらの記事をご覧ください。

于 2015-02-03T09:30:30.997 に答える