3.3. ビルド拡張およびプロジェクトアーティファクト

JBoss EAP for OpenShift イメージは、さまざまなアーティファクトを使用して OpenShift のデータベースサポートを拡張します。これらのアーティファクトは異なるメカニズムを介してビルドイメージに含まれます。

Build Extensions Process
重要

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 アーティファクトが含まれるようにする方法はいくつかあります。

  1. アプリケーションソースデプロイメントディレクトリーにアーティファクトが含まれるようにします。アーティファクトはビルド中にダウンロードされ、イメージにインジェクトされます。これは、JBoss EAP for OpenShift イメージでアプリケーションをデプロイするのと似ています。
  2. 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.shinstall_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 つのタイプがあります。

  1. 内部データソース。これらデータソースは、OpenShift 上で実行されますが、Red Hat レポジトリーからはデフォルトで利用できません。これらのデータソースの設定は、OpenShift のシークレットに追加された環境ファイルによって提供されます。
  2. 外部データソース。これらのデータソースは 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 のシークレットに追加された環境ファイルによって提供されます。

表3.2 リソースアダプタープロパティー

属性説明

PREFIX_ID

サーバー設定ファイルに指定されたリソースアダプターの識別子。

PREFIX_ARCHIVE

リソースアダプターアーカイブ。

PREFIX_MODULE_SLOT

module.xml 設定ファイルと必要な JAR ファイルがすべて含まれるスロットサブディレクトリー。

PREFIX_MODULE_ID

オブジェクトファクトリー Java クラスをロードできる JBoss モジュール ID。

PREFIX_CONNECTION_CLASS

管理された接続ファクトリーまたは管理オブジェクトの完全修飾クラス名。

PREFIX_CONNECTION_JNDI

接続ファクトリーの JNDI 名。

PREFIX_PROPERTY_ParentDirectory

データファイルが格納されるディレクトリー。

PREFIX_PROPERTY_AllowParentPaths

AllowParentPathsfalse に設定して、パスの .. を許可しないようにします。これにより、親ディレクトリーに含まれていないファイルを要求しないようにします。

PREFIX_POOL_MAX_SIZE

プールの最大接続数。各サブプールではこの値を超える接続は作成されません。

PREFIX_POOL_MIN_SIZE

プールの最小接続数。

PREFIX_POOL_PREFILL

プールをプレフィルすべきかどうかを指定します。値の変更後にサーバーを再起動する必要があります。

PREFIX_POOL_FLUSH_STRATEGY

エラーの場合にプールがどのようにフラッシュされるか。有効な値は FailingConnectionOnly (デフォルト)、IdleConnections、および EntirePool です。

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"
}