第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
mvn installCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、KJAR ファイルをビルドし、ローカルの Maven リポジトリーに配置します。デフォルトでは、このリポジトリーは
~/.m2/repoディレクトリーに配置されます。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resourcesディレクトリーで、Spring Boot アプリケーションのapplication.propertiesファイルに以下のプロパティーを追加します。kieserver.classPathContainer=true
kieserver.classPathContainer=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow このプロパティーを
trueに設定すると、KIE Server はコンテナーが使用するクラスローダーを使用して KJAR ファイルとその依存関係を読み込みます。KIE Server が必要な KJAR モジュールを読み込むには、以下のいずれかのアクションを実行します。
KIE Server を設定して、Spring Boot アプリケーションで利用可能なすべての KJAR モジュールをスキャンし、デプロイするには、以下のプロパティーを
application.propertiesファイルに追加します。kieserver.autoScanDeployments=true
kieserver.autoScanDeployments=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow このプロパティーを
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>
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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
-
<n>: 連番: 1 番目の KJAR モジュールは0、2 番目のモジュールの場合は1など。 -
<container>: KJAR モジュールのコンテナー ID -
<alias>: KJAR モジュールのエイリアス -
<artifact>: KJAR モジュールのアーティファクト ID -
<group>: KJAR モジュールのグループ ID -
<version>: KJAR モジュールのバージョン ID
以下の例では、
Evaluation用の KJAR モジュールの 2 つのバージョンを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Java ソースコードを使用してすべての KJAR モジュールを個別に設定するには、以下の例のように、ビジネスアプリケーションサービスにクラスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 追加するすべての KJAR モジュールについて、このクラスに
KieContainerResourceBean を作成します。Bean の名前はコンテナー名であり、KieContainerResource()の最初のパラメーターはエイリアス名で、ReleaseId()のパラメーターは、KJAR モジュールのグループ ID、アーティファクト ID、およびバージョン ID です。
必要に応じて、ビジネスアプリケーションを Red Hat OpenShift Container Platform Pod で実行するか、現在のディレクトリーが書き込み可能ではない他の環境で実行する場合は、
spring.jta.log-dirプロパティーをapplication.propertiesファイルに追加し、書き込み可能な場所に設定します。以下に例を示します。spring.jta.log-dir=/tmp
spring.jta.log-dir=/tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow このパラメーターは、トランザクションログの場所を設定します。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-serviceディレクトリーの Spring Bootpom.xmlファイルに以下の Maven プラグインを追加します。<GROUP_ID>、<ARTIFACT_ID>および<VERSION>は、プロジェクトが使用する KJAR アーティファクトのグループ、アーティファクト、バージョン (GAV) に置き換えます。これらの値は、KJAR ソースディレクトリーにあるpom.xmlファイルにあります。注記アーティファクトのバージョンを複数追加できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KJAR の実行に必要なアーティファクトは、ビルド時に解決されます。
以下の例では、
Evaluationアーティファクトのバージョンを 2 つ追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: WebSocket を使用して Business Central Monitoring インスタンスと通信できるように、JAR ファイルの KIE Server インスタンスを設定可能にするには、以下の変更を加えます。
以下の行を
pom.xmlファイルの<dependencies>タグの下に追加します。<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-controller-websocket-client</artifactId> <version>${version.org.kie}</version> </dependency><dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-controller-websocket-client</artifactId> <version>${version.org.kie}</version> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow WebSockets と Business Central の Monitoring インスタンスとの通信は、Red Hat OpenShift Container Platform でインスタンスの実行など、すべてのケースでサポートされます。
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources/application.propertiesファイルで、以下のプロパティーを追加するか、変更します。kieserver.location=${org.kie.server.location} kieserver.controllers=${org.kie.server.controller}kieserver.location=${org.kie.server.location} kieserver.controllers=${org.kie.server.controller}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
自己完結型 Spring Boot イメージをビルドするには、
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-serviceディレクトリーで以下のコマンドを入力します。mvn install
mvn installCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 自己完結型 Spring Boot イメージを実行するには、
targetサブディレクトリーで JAR ファイルを見つけ、以下のコマンドを入力します。java -jar <FILENAME>.jar
java -jar <FILENAME>.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドで
<FILENAME>は JAR ファイルの名前に置き換えます。KIE Server が WebSocket を使用して Business Central の Monitoring インスタンスに接続し、イメージを実行するように設定するには、以下のコマンドを入力します。
java -Dorg.kie.server.location=http://<LOCATION>:<PORT>/rest/server -Dorg.kie.server.controller=ws://<BC-HOSTNAME>:<BC-PORT>/websocket/controller -Dorg.kie.server.controller.user=<USER> -Dorg.kie.server.controller.pwd=<PASSWORD> -jar <FILENAME>.jar
java -Dorg.kie.server.location=http://<LOCATION>:<PORT>/rest/server -Dorg.kie.server.controller=ws://<BC-HOSTNAME>:<BC-PORT>/websocket/controller -Dorg.kie.server.controller.user=<USER> -Dorg.kie.server.controller.pwd=<PASSWORD> -jar <FILENAME>.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、以下の値を置き換えてください。
-
<LOCATION>: サービスにアクセスするための完全修飾ホスト名を指定します。Business Central Monitoring はサービスにアクセスしてプロセス情報を取得し、このホスト名を持つサービスの URL を表示します。 -
<PORT>: サービスにアクセスするためのポート (例:8090) -
<BC-HOSTNAME>: Business Central Monitoring インスタンスの完全修飾名 -
<BC-PORT>:8080などの Business Central Monitoring インスタンスのポート -
<USER>: Business Central Monitoring インスタンスに設定したユーザーのユーザー名 -
<PASSWORD>: Business Central Monitoring インスタンスに設定したユーザーのパスワード <FILENAME>: JAR ファイルの名前注記この設定では、サービスにセキュアでない HTTP 通信を使用します。Spring Boot ビジネスアプリケーションを有効な SSL 証明書で設定する場合は、
http:はhttps:に置き換えてセキュアな HTTPS 通信を使用できます。Spring Boot での SSL の設定に関する詳細は、Spring Boot のドキュメント を参照してください。注記Business Central Monitoring からプロセス情報を表示する場合は、Business Central にログインしたユーザーが、同じパスワードを使用してサービスで認証できるようにする必要があります。
-