localhost とは異なるアドレスにバインドされた JBoss サーバーを Maven から起動および停止するにはどうすればよいですか?
-
25-09-2019 - |
質問
私はレガシー Java Enterprise サーバー プロジェクトに取り組んでおり、現在夜間ビルドをセットアップしようとしています。Maven 2、JBoss 4.2、Bamboo を使用しています。アイデアとしては、開発サーバーの 1 つに Bamboo エージェントがあり、Maven ビルドが結果の .ear ファイルをハード デプロイしてからサーバーを再起動するように構成されているということです。(レガシー アプリケーションはアンデプロイ中に例外を引き起こすライブラリを使用しているため、ソフト デプロイは使用できません...この忌まわしいライブラリはいつか削除するつもりですが、まだ削除しません。) これは、私が自分のマシンで Maven ビルドを実行するときにうまく機能します。サーバーが停止され、最新のビルドで再起動されます。
ただし、開発サーバー上には、異なる IP アドレスにバインドされた複数の JBoss サーバー インスタンスがあります。また、私が使用している Maven JBoss プラグインは、localhost (デフォルト) にバインドされたサーバーのみを起動および停止できます。ソースコードをダウンロードしたところ、次のように JBoss bin ディレクトリ内の実行スクリプトとシャットダウンスクリプトが実行されるだけです。
launch( "run", "-c " + serverName );
そして
launch( "shutdown", "-S" );
それぞれ。ご覧のとおり、起動にはホスト バインディング (-b) パラメータは使用されず、シャットダウンによってポート localhost:1099 (デフォルトの JNDI ポート) でリッスンしているサーバー以外のサーバーを強制終了することもできません。
起動の回避策は、JBoss 設定ファイルで目的のホスト アドレスを直接設定することだと思います。(デフォルトの動作では、これらの構成ファイルには次のようなシステム プロパティが含まれています。 ${jboss.bind.address}
, 、起動時に、JBoss はこれらを、実行スクリプトの -b パラメーターとして指定された実際のホストアドレス (デフォルトでは localhost) に動的に置き換えます。したがって、代わりにこれらの構成ファイルに正確な IP を直接入力すると、理論的には、-b コマンド ライン パラメーターが欠落しているかどうかに関係なく、サーバーはその IP にバインドされます。さらに、私はそれを使用すると思います 0.0.0.0
ホスト名を指定すれば停止の問題も解決するでしょう...同じマシン上に他のサーバーがなかった場合。ただし、夜間のビルド用に完全に予約された別のサーバーでは機能する可能性があります。Bamboo エージェントなどを移行する必要があるだけです...数時間の追加労働。もちろん、未使用のサーバーが無限にあるわけではないので、リリース ブランチに別の夜間ビルドが必要になったら、振り出しに戻る可能性があります...
代替案としては、代わりに Cargo プラグインの使用を検討することです。このトリックが可能かどうかはまだ分かりません。
最後に重要なことですが、実際に JBoss プラグインを拡張してホスト バインディングを処理することができました。これには合計で数時間かかると思いますが、問題は完全に解決されました。これまでのところ、これが最も実行可能な代替手段のように思えます。
これらに関する具体的な経験やコメント、または代替ソリューションを提供できる人はいますか?
解決 2
さて、デフォルト以外のホスト名とネーミングポートも処理できるようにプラグインを拡張しました。少なくともこの特定の問題は現在解決されています。
パッチを Codehaus にコミットしました。
アップデート: バージョン 1.4.1 で正式にリリースされる予定です。
それまでの間、パッチを適用したプラグインのバージョンを緊急に必要とする方がいらっしゃいましたら、お知らせください。
他のヒント
Maven Cargo プラグインを使用すると、 <systemProperties>
これにより、JVM にシステム プロパティが設定されるため、次のようにプラグインを設定できるようになります。
<container>
...
<systemProperties>
<jboss.bind.address>192.168.1.10</jboss.bind.address>
</systemProperties>
</container>
これを参照してください このページ 別の例として。
があることに注意してください CARGO-405 の使用について <systemProperties>
のために jboss.bind.address
しかし、ステータスは実際には明らかではありません。
個人的には、時間をかけて Cargo でこれをテストするだけです。プラグインのセットアップにはそれほど時間はかかりません (JBoss プラグインを拡張するよりも短いです)。をチェックしてください Maven2 プラグイン リファレンス ガイド そしてその Maven2 プラグインの概要.