第6章 自己完結型 Red Hat Process Automation Manager Spring Boot JAR ファイルの作成
KIE Server および 1 つ以上の KJAR ファイルなど、完全なサービスを含む、自己完結型 Red Hat Process Automation Manager Spring Boot JAR ファイル 1 つを作成できます。Red Hat Process Automation Manager Spring Boot JAR ファイルは、ランタイム時に読み込まれる KJAR ファイルには依存しません。
必要に応じて、Red Hat Process Automation Manager Spring Boot JAR ファイルには、モジュールを含む、同じ KJAR ファイルの複数のバージョンを含めることができます。これらの KJAR ファイルは、artifactID
属性値と groupID
属性値が同じですが、version
の値は異なります。
含める KJAR ファイルは、クラ出力ダーの衝突を避けるために BOOT-INF/lib
ディレクトリーの JAR ファイルから分離されています。各 KJAR クラスパスコンテナーファイルは、他の KJAR クラスパスコンテナーファイルから分離され、Spring Boot クラ出力ダーに依存しません。
前提条件
- 既存の Red Hat Process Automation Manager Spring Boot プロジェクトがある。
- プロジェクトの KJAR ファイル 1 つ以上の開発を完了している。
手順
プロジェクトの KJAR ファイルをすべてビルドします。デフォルトのビジネスアプリケーションでは、KJAR ソースは
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-kjar
ディレクトリーに含まれます。BUSINESS-APPLICATION
はビジネスアプリケーションの名前に置き換えます。プロジェクトには、他の KJAR ソースディレクトリーが含まれている可能性があります。すべての KJAR ソースのディレクトリーの KJAR ファイルをビルドするには、以下の手順を実行します。
- KJAR ソースディレクトリーに移動します。
以下のコマンドを入力します。
mvn install
このコマンドは、KJAR ファイルをビルドし、ローカルの Maven リポジトリーに配置します。デフォルトでは、このリポジトリーは
~/.m2/repo
ディレクトリーに配置されます。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources
ディレクトリーで、Spring Boot アプリケーションのapplication.properties
ファイルに以下のプロパティーを追加します。kieserver.classPathContainer=true
このプロパティーを
true
に設定すると、KIE Server はコンテナーが使用するクラ出力ダーを使用して KJAR ファイルとその依存関係を読み込みます。KIE Server が必要な KJAR モジュールを読み込むには、以下のいずれかのアクションを実行します。
KIE Server を設定して、Spring Boot アプリケーションで利用可能なすべての KJAR モジュールをスキャンし、デプロイするには、以下のプロパティーを
application.properties
ファイルに追加します。kieserver.autoScanDeployments=true
このプロパティーを
true
に設定すると、プログラムを使用して宣言されているか、Maven プラグインを介して宣言されているかに関係なく、KIE Server はアプリケーションで利用可能なすべての KJAR モジュールをデプロイします。このオプションは、すべての KJAR モジュールを含める最も簡単な方法です。ただし、欠点が 2 つあります。
- アプリケーションは、すべての KJAR モジュールのグループ、アーティファクト、バージョン (GAV) に基づいて、すべてのコンテナー ID およびエイリアスを自動的に設定します。KJAR モジュールのカスタムコンテナー ID またはエイリアスを設定できません。
- 起動時に、アプリケーションは JAR ファイルおよび KJAR モジュールのクラスパスをスキャンします。そのため、起動期間は長くなる可能性があります。
このような欠点を回避するには、以下のいずれかのオプションで説明されているように
application.properties
ファイルを使用するか、Java ソースコードを使用して、すべての KJAR モジュールを個別に設定できます。サービスに追加する KJAR モジュールごとに、
application.properties
ファイルを使用して、すべての KJAR モジュールを個別に設定するには、以下のプロパティーをapplication.properties
ファイルに追加します。kieserver.deployments[<n>].containerId=<container> kieserver.deployments[<n>].alias=<alias> kieserver.deployments[<n>].artifactId=<artifact> kieserver.deployments[<n>].groupId=<group> kieserver.deployments[<n>].version=<version>
以下の値を置き換えます。
-
<n>
: 連番: 1 番目の KJAR モジュールは0
、2 番目のモジュールの場合は1
など。 -
<container>
: KJAR モジュールのコンテナー ID -
<alias>
: KJAR モジュールのエイリアス -
<artifact>
: KJAR モジュールのアーティファクト ID -
<group>
: KJAR モジュールのグループ ID -
<version>
: KJAR モジュールのバージョン ID
以下の例では、
Evaluation
用の KJAR モジュールの 2 つのバージョンを設定します。kieserver.deployments[0].alias=evaluation_v1 kieserver.deployments[0].containerId=evaluation_v1 kieserver.deployments[0].artifactId=Evaluation kieserver.deployments[0].groupId=com.myspace kieserver.deployments[0].version=1.0.0-SNAPSHOT kieserver.deployments[1].alias=evaluation_v2 kieserver.deployments[1].containerId=evaluation_v2 kieserver.deployments[1].artifactId=Evaluation kieserver.deployments[1].groupId=com.myspace kieserver.deployments[1].version=2.0.0-SNAPSHOT
-
Java ソースコードを使用してすべての KJAR モジュールを個別に設定するには、以下の例のように、ビジネスアプリケーションサービスにクラスを作成します。
@Configuration public class KieContainerDeployer { @Bean public KieContainerResource evaluation_v1() { KieContainerResource container = new KieContainerResource("evaluation_v1", new ReleaseId("com.myspace", "Evaluation", "1.0.0-SNAPSHOT"), STARTED); container.setConfigItems(Arrays.asList(new KieServerConfigItem(KieServerConstants.PCFG_RUNTIME_STRATEGY, "PER_PROCESS_INSTANCE", "String"))); return container; } @Bean public KieContainerResource evaluation_v2() { KieContainerResource container = new KieContainerResource("evaluation_v2", new ReleaseId("com.myspace", "Evaluation", "2.0.0-SNAPSHOT"), STARTED); container.setConfigItems(Arrays.asList(new KieServerConfigItem(KieServerConstants.PCFG_RUNTIME_STRATEGY, "PER_PROCESS_INSTANCE", "String"))); return container; } }
追加するすべての KJAR モジュールについて、このクラスに
KieContainerResource
Bean を作成します。Bean の名前はコンテナー名であり、KieContainerResource()
の最初のパラメーターはエイリアス名で、ReleaseId()
のパラメーターは、KJAR モジュールのグループ ID、アーティファクト ID、およびバージョン ID です。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service
ディレクトリーの Spring Bootservice/pom.xml
ファイルに以下の Maven プラグインを追加します。<GROUP_ID>
、<ARTIFACT_ID>
および<VERSION>
は、プロジェクトが使用する KJAR アーティファクトのグループ、アーティファクト、バージョン (GAV) に置き換えます。これらの値は、KJAR ソースディレクトリーにあるpom.xml
ファイルにあります。注記アーティファクトのバージョンを複数追加できます。
<build> <plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>${version.org.kie}</version> <executions> <execution> <id>copy</id> <phase>prepare-package</phase> <goals> <goal>package-dependencies-kjar</goal> </goals> </execution> </executions> <configuration> <artifactItems> <artifactItem> <groupId><GROUP_ID></groupId> <artifactId><ARTIFACT_ID></artifactId> <version><VERSION></version> </artifactItem> </artifactItems> </configuration> </plugin> <plugins> <build>
KJAR の実行に必要なアーティファクトは、ビルド時に解決されます。
以下の例では、
Evaluation
アーティファクトのバージョンを 2 つ追加します。<build> <plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>${version.org.kie}</version> <executions> <execution> <id>copy</id> <phase>prepare-package</phase> <goals> <goal>package-dependencies-kjar</goal> </goals> </execution> </executions> <configuration> <artifactItems> <artifactItem> <groupId>com.myspace</groupId> <artifactId>Evaluation</artifactId> <version>1.0.0-SNAPSHOT</version> </artifactItem> <artifactItem> <groupId>com.myspace</groupId> <artifactId>Evaluation</artifactId> <version>2.0.0-SNAPSHOT</version> </artifactItem> </artifactItems> </configuration> </plugin> <plugins> <build>
自己完結型 Spring Boot イメージをビルドするには、
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service
ディレクトリーで以下のコマンドを入力します。mvn install
オプション: 自己完結型 Spring Boot イメージを実行するには、
target
サブディレクトリーで JAR ファイルを見つけ、以下のコマンドを入力します。java -jar <FILENAME>.jar
このコマンドで
<FILENAME>
は JAR ファイルの名前に置き換えます。