3

現在、プログラムでワイルドフライの展開を停止する方法を探しています。

バックグラウンド:

  • アプリケーションは、MBean を使用して起動フェーズでいくつかのヘルス チェックを行います。
  • 一部のリソースが欠落しているために環境が無効であるとアプリが判断した場合は、アプリ自体のデプロイを停止する必要があります。

それがあった方法:

  • このアプリケーションは、以前は JBoss 4 で実行されていましたが、JMX を使用してシャットダウン コマンドを呼び出してアプリ サーバー全体を停止しました。
  • このコマンドが失敗した場合、System.exit(1) を使用して JVM 全体を単純に終了しました。

現在の問題:

  • デプロイされたアプリケーション内からサーバーを停止しようとすると、サーバー全体がハングするため、JMX を介して shutdown() を呼び出すと、wildfly では機能しません。
  • System.exit() も機能しません。何らかの方法でコマンドを乱暴にキャッチする必要があるためです。

では、サーバーを展開内から停止する方法、展開プロセスを停止する方法、またはアプリを展開解除する方法を知っている人はいますか?

どうもありがとう!

4

4 に答える 4

1

WildFly CLI: Running the CLIを試すか、 Marker Files を使用することをお勧めします。

しかし、いずれにせよ、サーバーがどのように動作するかはわかりません。myWarName.dodeployたとえば、あるときにファイルを追加するとどうなりますかmyWarName.isdeploying。ですから、このトピックで経験を積む時期をお知らせください (非常に興味深いものです)。

于 2014-05-15T14:07:56.493 に答える
0

わかりました、まだアプリをアンデプロイできませんでしたが、エラーが発生した場合に備えてサーバーをシャットダウンできました。これは完全ではありませんが、古いバージョンの JBoss でのアプリの動作と一致しているため、それほど悪くはないと思います。

私は今、CLIインターフェイスを次のように呼び出しています

try {
  String jbossBinDir = System.getProperty("jboss.server.base.dir").replace("standalone", "bin");
  Runtime.getRuntime().exec("sh " + jbossBinDir + "/jboss-cli.sh -c command=:shutdown");
} catch(IOException e) {
  ...
}

これは私たちにとって信頼できるものです。

上記のコメントで、実行するとエラー コードが返されると述べましたが、これはおそらく、コマンド コールにタイプミスがあったためです。

于 2014-05-21T07:56:30.803 に答える