JBoss EAPの起動可能なjarで構成ファイル(standalone.xml)を変更する

Red Hat のソリューションアーキテクトの瀬戸です。

これはJakarta EE / Java EE Advent Calendar 2025の二日目の記事です。

昨日は @kazumura による 解説: Jakarta EE Developer Survey 2025
明日は @TTakakiyo による 記事です。(公開されたらリンクを張ります!)

以前、 JBoss EAP 8.1 で新しくサポートされた起動可能なJAR(Bootable jar)とGalleonによるサーバーの軽量化を試す - 赤帽エンジニアブログ という記事でJBoss EAPで起動可能なjar(uber-jar)がサポートされたよ!ということをご紹介させてもらいました。

その時にどうやって設定するの?standalone.xmlはどうやって変更するの?と質問を受けたので今回はそちらの方法を書きます。

簡単に言うと、pom.xmlにpackaging-scripts属性を追加し、実行するスクリプトを指定する事で、構成を変更することができます。

packageing-scriptの書き方の例(JBoss EAPのドキュメント: JBoss EAPのプロビジョニングより)

<configuration>
  ~~~
  <packaging-scripts>
    <packaging-script>
      <scripts>
        <script>../scripts/script1.cli</script>
      </scripts>
      <commands>
        <command>/system-property=foo:add(value=bar)</command>
      </commands>
      <properties-files>
        <property-file>my-properties.properties</property-file>
      </properties-files>
      <java-opts>
        <java-opt>-Xmx256m</java-opt>
      </java-opts>
      <!-- Expressions resolved during server execution -->
      <resolve-expressions>false</resolve-expressions>
    </packaging-script>
  </packaging-scripts>
  ~~~
</configuration>

実際の例で試してみます。 待ち受けするポートを18080に、管理画面のポートを19990に変更します。

<packaging-scripts>
  <packaging-script>
    <commands>
      <command>/socket-binding-group=standard-sockets/socket-binding=http:write-attribute(name="port",value="18080")</command>
      <command>/socket-binding-group=standard-sockets/socket-binding=management-http:write-attribute(name="port",value="19990")</command>
    </commands>
  </packaging-script>
</packaging-scripts>

これを、 JBoss EAP 8.1 で新しくサポートされた起動可能なJAR(Bootable jar)とGalleonによるサーバーの軽量化を試す - 赤帽エンジニアブログ で使用したpom.xmlに追記して実行します。 ビルド中に指定したスクリプトが実行されることが確認できます。

ビルド中のスクリプトの実行

出来上がったjarを実行すると実際にポートが変更されていることが確認できます。

HTTPポートが18080に変更されている

ということで、簡単にですが、JBoss EAPで起動可能なjarを指定したときに設定を変更する方法を紹介させてもらいました。

現時点では構築済みの設定ファイル(standalone.xml)を直接指定する方法は提供されていないようです。 必要とされているお客様はサポートチャンネルを通じてご連絡ください。

参考

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。