第9章 アプリケーションのパッケージング

本セクションでは、デプロイメントおよび実行用に Thorntail ベースのアプリケーションをパッケージ化する方法について説明します。

9.1. パッケージタイプ

Thorntail を使用する場合は、使用する方法やデプロイ方法に応じて、ランタイムとアプリケーションをパッケージ化する方法は複数あります。

9.1.1. UberJar

uberjar は、アプリケーションを実行するために必要なものをすべて含む単一の Java .jar ファイルです。つまり、選択したランタイムコンポーネントの両方が、アプリケーションサーバーとしてアプリケーションコンポーネント( .war ファイル)と理解することができます。

uberjar は、単一の実行可能なバイナリーアーティファクトを生成して、組織内のテスト、検証、および実稼働環境を通過する多くの継続的インテグレーション/継続的デプロイメント(CI/CD)パイプラインスタイルに役立ちます。

Thorntail が生成する uberjar の名前には、アプリケーションの名前と -thorntail.jar 接尾辞が含まれます。

uberjar は、実行可能な JAR のように実行できます。

$ java -jar myapp-thorntail.jar

9.1.2. hollow JAR

hollow JAR は uberjar と似ていますが、ランタイムコンポーネントのみが含まれるため、アプリケーションコードは含まれません。

hollow jar は、Docker などの Linux コンテナーを含むデプロイメントプロセスに適しています。コンテナーを使用する場合、イメージ階層下でコンテナーイメージにランタイムコンポーネントを配置します。つまり、アプリケーションコードのみが含まれる上位層がより速く再ビルドされる可能性が低くなります。

Thorntail が生成する hollow JAR の名前にはアプリケーションの名前、-hollow-thorntail.jar 接尾辞が含まれます。hollow JAR を利用するには、アプリケーションの .war ファイルを別々にパッケージ化する必要があります。

注記

hollow JAR の使用にはいくつかの制限があります。

  • Thorntail が JDBC ドライバーを自動検出できるようにするには、ドライバーを使用する JAR を thorntail.classpath システムプロパティーに追加する必要があります。以下に例を示します。

    $ java -Dthorntail.classpath=./h2-1.4.196.jar -jar my-hollow-thorntail.jar myApp.war
  • アプリケーションの YAML 設定ファイルは自動的に適用されません。手動で指定する必要があります。以下に例を示します。

    $ java -jar my-hollow-thorntail.jar myApp.war -s ./project-defaults.yml

hollow JAR を実行する場合は、アプリケーションの .war ファイルを Java バイナリーの引数として指定します。

$ java -jar myapp-hollow-thorntail.jar myapp.war

9.1.2.1. pre-Built Hollow JAR

Thorntail には、以下の事前にビルドされた hollow JAR が同梱されます。

web
Web テクノロジーに重点を置いた機能
microprofile
すべての Eclipse MicroProfile 仕様で定義される機能

hollow JAR は以下のコーディネートで利用できます。

<dependency>
    <groupId>io.thorntail.servers</groupId>
    <artifactId>[web|microprofile]</artifactId>
</dependency>