4.3. ビルド拡張およびプロジェクトアーティファクト
JBoss EAP for OpenShift イメージは、さまざまなアーティファクトを使用して OpenShift のデータベースサポートを拡張します。これらのアーティファクトは異なるメカニズムを介してビルドイメージに含まれます。
- S2I プロセスの間にイメージにインジェクトされる S2I アーティファクト 。
- OpenShift シークレットメカニズムを介して提供される環境ファイルからの ランタイムアーティファクト 。

Red Hat が提供する内部データソースドライバーを JBoss EAP for OpenShift イメージと使用する場合のサポートは、非推奨になりました。Red Hat では、データベースベンダーから取得した JDBC ドライバーを JBoss EAP アプリケーションに使用することをお勧めします。
以下の内部データソースは、JBoss EAP for OpenShift イメージでは提供されないようになりました。
- MySQL
- PostgreSQL
ドライバーのインストールに関する詳細は、モジュール、ドライバー、および汎用デプロイメント を参照してください。
JBoss EAP で JDBC ドライバーを設定するための詳細は、設定ガイドの JDBC ドライバー を参照してください。
プロビジョニングされたサーバーに追加する場合は、カスタムレイヤーを作成してこれらのドライバーおよびデータソースをインストールすることもできます。
4.3.1. S2I アーティファクト
S2I アーティファクトには、モジュール、ドライバー、およびデプロイメントに必要な設定インフラストラクチャーを提供する追加の汎用デプロイメントが含まれます。この設定は S2I プロセスの間にイメージに組み込まれるため、データソースと関連するリソースアダプターのみをランタイムに設定する必要があります。
S2I プロセスを指示してカスタム Maven アーティファクトリーポジトリーミラーを利用する方法の追加情報は アーティファクトリーポジトリーミラー を参照してください。
4.3.1.1. モジュール、ドライバー、および汎用デプロイメント
JBoss EAP for OpenShift イメージにこれらの S2I アーティファクトが含まれるようにする方法はいくつかあります。
- アプリケーションソースデプロイメントディレクトリーにアーティファクトが含まれるようにします。アーティファクトはビルド中にダウンロードされ、イメージにインジェクトされます。これは、JBoss EAP for OpenShift イメージでアプリケーションをデプロイするのと似ています。
CUSTOM_INSTALL_DIRECTORIES環境変数が含まれるようにします。これは、S2I プロセス中にイメージのアーティファクトのインストールおよび設定に使用されるディレクトリーのコンマ区切りリストです。S2I プロセスにこの情報が含まれるようにする方法は 2 つあります。指定されたインストールディレクトリーの
install.shスクリプト。インストールスクリプトは S2I プロセス中に実行され、問題なく動作します。install.shスクリプトの例#!/bin/bash injected_dir=$1 source /usr/local/s2i/install-common.sh install_deployments ${injected_dir}/injected-deployments.war install_modules ${injected_dir}/modules configure_drivers ${injected_dir}/drivers.envinstall.shスクリプトは、install-common.shによって提供される API を使用してベースイメージをカスタマイズします。install-common.shには、モジュール、ドライバー、および汎用デプロイメントをインストールおよび設定するためにinstall.shスクリプトによって使用される関数が含まれます。install-common.sh内に含まれる関数は次のとおりです。-
install_modules -
configure_drivers install_deploymentsモジュール
モジュールは、クラスローディングおよび依存関係管理に使用されるクラスの論理グループです。モジュールは、アプリケーションサーバーの
EAP_HOME/modules/ディレクトリーに定義されます。各モジュールは、EAP_HOME/modules/org/apache/のようにサブディレクトリーとして存在します。各モジュールのディレクトリーには、デフォルトが main であるスロットサブディレクトリーが含まれ、module.xml設定ファイルと必要な JAR ファイルすべてが含まれます。MySQL および PostgreSQL JDBC ドライバーの
module.xmlファイルの設定に関する詳細は、JBoss EAP 設定ガイドの データソース設定の例 を参照してください。PostgreSQL データソースの
module.xmlファイルの例<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="org.postgresql"> <resources> <resource-root path="postgresql-jdbc.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
MySQL Connect/J 8 データソースの
module.xmlファイルの例<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-8.0.Z.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
注記mysql-connector-java-8.0.Z.jarの.Z はダウンロードしたJARファイルのバージョンを示します。ファイル名は変更できますが、名前はmodule.xmlファイルの名前に一致する必要があります。install.shのinstall_modules関数は、module.xmlとともに該当の JAR ファイルを JBoss EAP の modules ディレクトリーにコピーします。ドライバー
ドライバーはモジュールとしてインストールされます。ドライバーは
configure_drivers関数によってinstall.shに設定されます。 この設定プロパティーは ランタイムアーティファクト 環境ファイルに定義されます。データソースドライバーの追加
MySQL および PostgreSQL データソースは、事前に設定された内部データソースとして提供されなくなりました。これらのドライバーをモジュールとしてインストールできます。モジュール、ドライバー、および汎用デプロイメント の説明を参照してください。これらの JDBC ドライバーは、JBoss EAP アプリケーションのデータベースベンダーから取得できます。
インストールする各データソースの
drivers.envファイルを作成します。MySQL データソースの
drivers.envファイルの例#DRIVER DRIVERS=MYSQL MYSQL_DRIVER_NAME=mysql MYSQL_DRIVER_MODULE=org.mysql MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver MYSQL_XA_DATASOURCE_CLASS=com.mysql.cj.jdbc.MysqlXADataSource
PostgreSQL データソースの
drivers.envファイルの例#DRIVER DRIVERS=POSTGRES POSTGRES_DRIVER_NAME=postgresql POSTGRES_DRIVER_MODULE=org.postgresql POSTGRES_DRIVER_CLASS=org.postgresql.Driver POSTGRES_XA_DATASOURCE_CLASS=org.postgresql.xa.PGXADataSource
MySQL や PostgreSQL など、さまざまなドライバーのダウンロード場所に関する情報は、設定ガイドの JDBC ドライバーのダウンロード場所 を参照してください。
-
汎用デプロイメント
JAR、WAR、RAR、EAR などのデプロイ可能なアーカイブファイルは、install-common.sh の API によって提供される install_deployments を使用して、インジェクトされたイメージからデプロイすることができます。
CUSTOM_INSTALL_DIRECTORIES環境変数が宣言されていても、カスタムインストールディレクトリーにinstall.shスクリプトがない場合、以下のアーティファクトディレクトリーがビルドイメージの該当する場所にコピーされます。-
$JBOSS_HOME/modules/にコピーされるmodules/* -
configuration/*は$JBOSS_HOME/standalone/configurationにコピーされます。 -
deployments/*は$JBOSS_HOME/standalone/deploymentsにコピーされます。
これは
install.shの代替方法と比べ基本的な設定方法となります。 アーティファクトが適切に構築される必要があります。-
4.3.2. ランタイムアーティファクト
4.3.2.1. データソース
データソースには、以下の 2 つのタイプがあります。
- 内部データソース。これらのデータソースは OpenShift で実行されますが、デフォルトでは Red Hat レジストリーまたは OpenShift リポジトリーでは使用できません。これらのデータソースの設定は、OpenShift Secret に追加された環境ファイルによって提供されます。
- 外部データソース。これらのデータソースは OpenShift 上では動作しません。外部データソースの設定は、OpenShift のシークレットに追加された環境ファイルによって提供されます。
OpenShift シークレットの作成と設定の詳細は、シークレット を参照してください。
ソースプロジェクトの設定ディレクトリーなどのディレクトリーにデータソース環境ファイルを作成できます。次の例は、サンプルのデータソース環境ファイルの内容を示しています。
例: データソース環境ファイル
DB_SERVICE_PREFIX_MAPPING=PostgresXA-POSTGRES=DS1 DS1_JNDI=java:jboss/datasources/pgds DS1_DRIVER=postgresql-42.2.5.jar DS1_USERNAME=postgres DS1_PASSWORD=postgres DS1_MAX_POOL_SIZE=20 DS1_MIN_POOL_SIZE=20 DS1_CONNECTION_CHECKER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker DS1_EXCEPTION_SORTER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
DB_SERVICE_PREFIX_MAPPING プロパティーは、データソースプロパティー接頭辞のコンマ区切りリストです。これらの接頭辞は、データソースのすべてのプロパティーに追加されます。複数のデータソースを 1 つの環境ファイルに含むことができます。また、各データソースを個別の環境ファイルに提供することもできます。
データソースには、接続プール固有のプロパティーとデータベースドライバー固有のプロパティーの 2 種類のプロパティーが含まれます。接続プール固有のプロパティーはデータソースへの接続を生成します。データベースドライバー固有のプロパティーはデータソースのドライバーを決定し、ドライバー S2I アーティファクトとして設定されます。
上記の例では、DS1 はデータソース接頭辞です。CONNECTION_CHECKER はデータベースの接続の検証に使用される接続チェッカークラスを指定し、EXCEPTION_SORTER は致命的なデータベース接続例外検出に使用される例外ソータークラスを指定します。
データソース環境ファイルは、プロジェクトの OpenShift シークレットに追加されます。これらの環境ファイルは、ENV_FILES 環境プロパティーを使用して、テンプレート内で呼び出されます。 この環境プロパティーの値は、以下のような完全修飾環境ファイルのコンマ区切りリストです。
{
“Name”: “ENV_FILES”,
“Value”: “/etc/extensions/datasources1.env,/etc/extensions/datasources2.env”
}4.3.2.2. リソースアダプター
リソースアダプターの設定は、OpenShift のシークレットに追加された環境ファイルによって提供されます。
表4.2 リソースアダプタープロパティー
| 属性 | 説明 |
|---|---|
| PREFIX_ID | サーバー設定ファイルに指定されたリソースアダプターの識別子。 |
| PREFIX_ARCHIVE | リソースアダプターアーカイブ。 |
| PREFIX_MODULE_SLOT |
|
| PREFIX_MODULE_ID | オブジェクトファクトリー Java クラスをロードできる JBoss モジュール ID。 |
| PREFIX_CONNECTION_CLASS | 管理された接続ファクトリーまたは管理オブジェクトの完全修飾クラス名。 |
| PREFIX_CONNECTION_JNDI | 接続ファクトリーの JNDI 名。 |
| PREFIX_PROPERTY_ParentDirectory | データファイルが格納されるディレクトリー。 |
| PREFIX_PROPERTY_AllowParentPaths |
|
| PREFIX_POOL_MAX_SIZE | プールの最大接続数。各サブプールではこの値を超える接続は作成されません。 |
| PREFIX_POOL_MIN_SIZE | プールの最小接続数。 |
| PREFIX_POOL_PREFILL | プールをプレフィルすべきかどうかを指定します。値の変更後にサーバーを再起動する必要があります。 |
| PREFIX_POOL_FLUSH_STRATEGY |
エラーの場合にプールがどのようにフラッシュされるか。有効な値は |
RESOURCE_ADAPTERS プロパティーは、リソースアダプタープロパティー接頭辞のコンマ区切りリストです。接頭辞はそのリソースアダプターのすべてのプロパティーに追加されます。複数のリソースアダプターを 1 つの環境ファイルに含めることができます。以下の例では、MYRA がリソースアダプターの接尾辞として使用されます。各リソースアダプターを個別の環境ファイルに提供することもできます。
例: リソースアダプター環境ファイル
#RESOURCE_ADAPTER RESOURCE_ADAPTERS=MYRA MYRA_ID=myra MYRA_ARCHIVE=myra.rar MYRA_CONNECTION_CLASS=org.javaee7.jca.connector.simple.connector.outbound.MyManagedConnectionFactory MYRA_CONNECTION_JNDI=java:/eis/MySimpleMFC
リソースアダプター環境ファイルは、プロジェクト namespace の OpenShift シークレットに追加されます。これらの環境ファイルは、ENV_FILES 環境プロパティーを使用して、テンプレート内で呼び出されます。 この環境プロパティーの値は、以下のような完全修飾環境ファイルのコンマ区切りリストです。
{
"Name": "ENV_FILES",
"Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env"
}