36.2. JDBC Web Server データソースの設定

Java Database Connectivity (JDBC) は、Java で記述されたプログラムとデータベースを接続するための API 仕様です。データソースは、アプリケーションサーバーなど、Java Database Connectivity (JDBC) クライアントを有効にするオブジェクトで、データベースへの接続を確立します。アプリケーションは、JNDI (Java Naming and Directory Interface) ツリーまたはローカルのアプリケーションコンテキストでデータソースを検索し、データベース接続を要求してデータを取得します。KIE Server にデータソースを設定して、サーバーと、指定したデータベースとの間で適切なデータ交換を行う必要があります。

通常、Red Hat Process Automation Manager を使用するソリューションは、1 つのトランザクション内で複数のリソースを管理します。非同期のジョブ、イベント、タイマーなどの JMS。Red Hat Process Automation Manager では、データの原子性と一貫した結果を保証するために、可能な限りデータソースに XA ドライバーを必要とします。異なるスキーマのトランザクションコードがリスナー内に存在する場合や、jBPM エンジンが提供するフックから取得する場合は、XA ドライバーも必要となります。

1 つのトランザクションに複数のリソースが参加していないことが確認できない限り、XA 以外のデータソースを使用しないでください。

注記

実稼働環境の場合は、実際のデータソースを指定します。実稼働環境で、データソースの例は使用しないでください。

前提条件

  • Red Hat JBoss Web Server に Red Hat Process Automation Manager がインストールされている。
  • 34章Red Hat Process Automation Manager インストールファイルのダウンロードの記載どおりに、Red Hat Process Automation Manager 7.12.x Maven リポジトリー (rhpam-7.12.0-maven-repository.zip) および Red Hat Process Automation Manager 7.12.x Add-Ons (rhpam-7.12.0-add-ons.zip) ファイルをダウンロードしている。
  • 以下のサポート対象のデータベースおよび Hibernate 方言の 1 つを設定する。

    • DB2: org.hibernate.dialect.DB2Dialect
    • MSSQL: org.hibernate.dialect.SQLServer2012Dialect
    • MySQL: org.hibernate.dialect.MySQL5InnoDBDialect
    • MariaDB: org.hibernate.dialect.MySQL5InnoDBDialect
    • Oracle: org.hibernate.dialect.Oracle10gDialect
    • PostgreSQL: org.hibernate.dialect.PostgreSQL82Dialect
    • PostgreSQL plus: org.hibernate.dialect.PostgresPlusDialect
    • Sybase: org.hibernate.dialect.SybaseASE157Dialect

手順

  1. 以下の手順を実行して、データベースを準備します。

    1. TEMP_DIR などの一時ディレクトリーに rhpam-7.12.0-add-ons.zip を展開します。
    2. TEMP_DIR/rhpam-7.12.0-migration-tool.zip を展開します。
    3. 現在のディレクトリーから、TEMP_DIR/rhpam-7.12.0-migration-tool/ddl-scripts ディレクトリーに移動します。このディレクトリーには、複数のデータベースタイプの DDL スクリプトが含まれています。
    4. 使用するデータベースに、お使いのデータベースタイプの DDL スクリプトをインポートします。以下に例を示します。

      psql jbpm < /ddl-scripts/postgresql/postgresql-jbpm-schema.sql
      注記

      PostgreSQL または Oracle を Spring Boot と併用する場合は、対応する Spring Boot の DDL スクリプト (/ddl-scripts/oracle/oracle-springboot-jbpm-schema.sql または /ddl-scripts/postgresql/postgresql-springboot-jbpm-schema.sql) をインポートする必要があります。

  2. rhpam-7.12.0-maven-repository.zip のオフライン Maven リポジトリーファイルを展開します。
  3. 展開したオフラインの Maven リポジトリーから JWS_HOME/tomcat/lib ディレクトリーにコピーします。VERSION は対象のライブラリーのバージョンに置き換えます。

    org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/{VERSION}/jboss-transaction-api_1.2_spec-{VERSION}.jar
    org/jboss/integration/narayana-tomcat/{VERSION}/narayana-tomcat-{VERSION}.jar
    org/jboss/narayana/jta/narayana-jta/{VERSION}/narayana-jta-{VERSION}.jar
    org/jboss/jboss-transaction-spi/{VERSION}/jboss-transaction-spi-{VERSION}.jar
  4. データベースの JDBC ドライバーを JWS_HOME/tomcat/lib ディレクトリーにコピーします。
  5. JWS_HOME/tomcat/conf/context.xml ファイルで、プーリングしている XA データソースを設定します。

    注記

    以下の例のプロパティーで、お使いのデータベースサーバーに該当しない場合があります。JDBC ドライバーのドキュメントを参照して、どのプロパティーを設定するかを判断してください。

    1. プーリング機能なしで XA データソースを設定します。この XA データソースは、対象のデータベースに新規接続を作成するときに使用します。以下の例では、XA データソースは xads で、変数は 表36.1「XA データソースの変数」 に定義されています。

      <?xml version="1.0" encoding="UTF-8"?>
      <Context>
      <Resource
      auth="Container"
      databaseName="${datasource.dbName}"
      description="XA Data Source"
      factory="org.apache.tomcat.jdbc.naming.GenericNamingResourcesFactory" loginTimeout="0"
      name="xads"
      uniqueName="xads"
      portNumber="${datasource.port}"
      serverName="${datasource.hostname}"
      testOnBorrow="false"
      type="${datasource.class}"
      url="${datasource.url}"
      URL="${datasource.url}"
      user="${datasource.username}"
      password="${datasource.password}"
      driverType="4"
      schema="${datasource.schema}"
      />
      </Context>

      表36.1 XA データソースの変数

      変数説明

      <datasource.dbName>

      データベース名。

      <datasource.port>

      データベースのポート番号。

      <datasource.hostname>

      データベースホスト名。

      <datasource.class>

      JDBC ドライバーの XADataSource クラス。

      <datasource.url>

      JDBC データベース接続の URL。データベースによって、URL プロパティーが url、または URL (H2 データベースなど) になります。

      <datasource.username>

      データベース接続のユーザー名。

      <datasource.password>

      データベース接続のパスワード。

      <datasource.schema>

      データベーススキーマ。

    2. 新規接続の作成時に XA データソースに依存するプーリングデータソースを設定します。以下の例では、データソースは poolingXaDs で、<datasource.username> はデータベース接続のユーザー名、<datasource.password> はデータベース接続のパスワードどなっています。

      <?xml version="1.0" encoding="UTF-8"?>
      <Context>
      <Resource
      name="poolingXaDs"
      uniqueName="poolingXaDs"
      auth="Container"
      description="Pooling XA Data Source" factory="org.jboss.narayana.tomcat.jta.TransactionalDataSourceFactory" testOnBorrow="true"
      transactionManager="TransactionManager" transactionSynchronizationRegistry="TransactionSynchronizationRegistry" type="javax.sql.XADataSource"
      username="${datasource.username}"
      password="${datasource.password}"
      xaDataSource="xads"
      />
      </Context>

      データソースが java:comp/env/poolingXaDs の JNDI 名で取得でき、次の手順に記載されているように、org.kie.server.persistence.ds システムプロパティーを使用して KIE Server に渡すことができます。

      注記

      プーリングのデータソース設定は、特に TransactionManagerTransactionSynchronizationRegistry など、kie-server アプリケーションの context.xml ファイルで以前に設定された追加リソースに依存します。

  6. KIE Server をがデータソースを使用するように設定します。

    1. テキストエディターで以下のスクリプトのいずれかを開きます。

      注記

      setenv.sh スクリプトまたは setenv.bat スクリプトはすでに存在しているはずです。存在していない場合は作成してください。

      • Linux または Unix の場合:

        JWS_HOME/tomcat/bin/setenv.sh
      • Windows の場合:

        JWS_HOME/tomcat/bin/setenv.bat
    2. 以下のプロパティーを CATALINA_OPS に追加します。<hibernate.dialect> はお使いのデータベースの Hibernate 方言に置き換えます。

      CATALINA_OPTS="-Xmx1024m
      -Dorg.jboss.logging.provider=jdk
      -Dorg.kie.server.persistence.ds=java:comp/env/poolingXaDs
      -Dorg.kie.server.persistence.tm=JBossTS
      -Dorg.kie.server.persistence.dialect=${<hibernate.dialect>}"