もうあまり使うことはないかもしれないが、Java のアプリケーションサーバ WildFly の運用のための覚え書き。
同一物理マシンに複数の WildFly を設置するのは可能か?
レガシーなプロジェクトで、JavaEE ウェブアプリと JakartaEE ウェブアプリが混在するような場合、少なくとも2台のWildFly が必要になる。27 以降の WildFly と 27 より前のバージョンがそれぞれ少なくとも一つは必要。
結論から言うとできる。
ただ、ポートがかち合わないように設定ファイルを変える。
ワイの場合は、各ポート番号に 10000 を足す。
standalone-full.xml
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="ajp" port="${jboss.ajp.port:18009}"/>
<socket-binding name="http" port="${jboss.http.port:18080}"/>
<socket-binding name="https" port="${jboss.https.port:18443}"/>
<socket-binding name="iiop" interface="unsecure" port="13528"/>
<socket-binding name="iiop-ssl" interface="unsecure" port="13529"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:19990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:19993}"/>
<socket-binding name="txn-recovery-environment" port="14712"/>
<socket-binding name="txn-status-manager" port="14713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:10025}"/>
</outbound-socket-binding>
<outbound-socket-binding name="messaging-activemq">
<remote-destination host="${jboss.messaging.connector.host:localhost}" port="${jboss.messaging.connector.port:51616}"/>
</outbound-socket-binding>
</socket-binding-group>
ただし、このやり方だと activemq は 71616 となり
A maximum value of 65535 is required
と WildFly に怒られるので、10000 を引く。
こうしておくと以下のように管理画面も同時に表示できる。
めでたしめでたし。
WildFly をサービス化する
JBOSS_HOME の docs 以下のフォルダに各種サンプルファイルがあるので、これをうまく活用する。
Ubuntu の場合は、以下のようにそのまま使える。
sudo mkdir /etc/wildfly
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/wildfly.service
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/launch.sh
この作業が終わった後、初回起動は
sudo systemctl enable --now wildfly
というコマンドで。
jboss-cli.sh による deploy
なお、サービスが走っている場合のデプロイは jboss-cli.sh を走らせ、そこから
deploy PathTo/hoge.war
で投入できる。
バックグランドで起動させる
Java の慣習でしょうか & を付ける。
standalone.sh -c stanalone-full.xml &
Ctrl+C でメッセージを終了させてもプロセスは終わってない模様。
コマンドラインから停止
バックグランドで走らせた状態では Ctrl+C では停止できないので以下のコマンドを使う。
jboss-cli.sh --connect command=shutdown
(適宜修正予定)