3.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 ドライバー を参照してください。
プロビジョニングされたサーバーに追加する場合は、カスタムレイヤーを作成してこれらのドライバーおよびデータソースをインストールすることもできます。
3.3.1. S2I アーティファクト
S2I アーティファクトには、モジュール、ドライバー、およびデプロイメントに必要な設定インフラストラクチャーを提供する追加の汎用デプロイメントが含まれます。この設定は S2I プロセスの間にイメージに組み込まれるため、データソースと関連するリソースアダプターのみをランタイムに設定する必要があります。
S2I プロセスを指示してカスタム Maven アーティファクトリーポジトリーミラーを利用する方法の追加情報は アーティファクトリーポジトリーミラー を参照してください。
3.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.env
install.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.jdbc.jdbc2.optional.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
スクリプトがない場合、以下のアーティファクトディレクトリーがビルドイメージの該当する場所にコピーされます。-
modules/*
は$JBOSS_HOME/modules/system/layers/openshift
にコピーされます。 -
configuration/*
は$JBOSS_HOME/standalone/configuration
にコピーされます。 -
deployments/*
は$JBOSS_HOME/standalone/deployments
にコピーされます。
これは
install.sh
の代替方法と比べ基本的な設定方法となります。 アーティファクトが適切に構築される必要があります。-
3.3.2. ランタイムアーティファクト
3.3.2.1. データソース
データソースには、以下の 2 つのタイプがあります。
- 内部データソース。これらデータソースは、OpenShift 上で実行されますが、Red Hat レポジトリーからはデフォルトで利用できません。これらのデータソースの設定は、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” }
3.3.2.2. リソースアダプター
リソースアダプターの設定は、OpenShift のシークレットに追加された環境ファイルによって提供されます。
属性 | 説明 |
---|---|
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" }