私はレガシーJavaEnterpriseサーバープロジェクトに取り組んでおり、現在、ナイトリービルドをセットアップしようとしています。Maven 2、JBoss 4.2、Bambooを使用しています。アイデアは、開発サーバーの1つにBambooエージェントがあり、Mavenビルドは、結果の.earファイルをハードデプロイしてからサーバーを再起動するように構成されているということです。(レガシーアプリケーションがアンデプロイ中に例外を引き起こすライブラリを使用しているため、ソフトデプロイを使用できません...ある時点でその気のライブラリを削除しますが、まだではありません。)これはMavenを実行するとうまく機能します自分のマシンでビルドする:サーバーを停止し、最新のビルドで再起動します。
ただし、開発サーバーには、異なるIPアドレスにバインドされた複数のJBossサーバーインスタンスがあります。また、私が使用するMaven JBossプラグインは、ローカルホスト(デフォルト)にバインドされたサーバーのみを起動および停止できます。ソースコードをダウンロードしたところ、次のように、JBossbinディレクトリで実行スクリプトとシャットダウンスクリプトが実行されます。
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エージェントなどを移行する必要があります...数時間の追加作業。もちろん、未使用のサーバーが無限に供給されているわけではないので、リリースブランチ用に別のナイトリービルドが必要になったときに、スクエア1に戻る可能性があります...
別の方法は、代わりにCargoプラグインの使用を検討することです...このトリックが可能かどうかはまだわかりません。
最後になりましたが、実際にJBossプラグインを拡張して、ホストバインディングを処理することができました。これには、アクティブな時間が数時間かかると思いますが、問題は完全に解決しました。これまでのところ、これは私にとって最も実行可能な代替案のようです。
誰かがこれら、または代替ソリューションに関する具体的な経験/コメントを提供できますか?