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.13.5 Maven リポジトリー (
rhpam-7.13.5-maven-repository.zip
) および Red Hat Process Automation Manager 7.13.x Add-Ons (rhpam-7.13.5-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
-
DB2:
手順
以下の手順を実行して、データベースを準備します。
-
TEMP_DIR
などの一時ディレクトリーにrhpam-7.13.5-add-ons.zip
を展開します。 -
TEMP_DIR/rhpam-7.13.5-migration-tool.zip
を展開します。 -
現在のディレクトリーから、
TEMP_DIR/rhpam-7.13.5-migration-tool/ddl-scripts
ディレクトリーに移動します。このディレクトリーには、複数のデータベースタイプの DDL スクリプトが含まれています。 使用するデータベースに、お使いのデータベースタイプの 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
) をインポートする必要があります。
-
-
rhpam-7.13.5-maven-repository.zip
オフライン Maven リポジトリーファイルを展開します。 デプロイメントしたオフラインの 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
-
データベースの JDBC ドライバーを
JWS_HOME/tomcat/lib
ディレクトリーにコピーします。 JWS_HOME/tomcat/conf/context.xml
ファイルで、プーリングしている XA データソースを設定します。注記以下の例のプロパティーで、お使いのデータベースサーバーに該当しない場合があります。JDBC ドライバーのドキュメントを参照して、どのプロパティーを設定するかを判断してください。
プーリング機能なしで 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>
データベーススキーマ。
新規接続の作成時に 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 に渡すことができます。注記プーリングのデータソース設定は、特に
TransactionManager
やTransactionSynchronizationRegistry
など、kie-server
アプリケーションのcontext.xml
ファイルで以前に設定された追加リソースに依存します。
KIE Server をがデータソースを使用するように設定します。
テキストエディターで以下のスクリプトのいずれかを開きます。
注記setenv.sh
スクリプトまたはsetenv.bat
スクリプトはすでに存在しているはずです。存在していない場合は作成してください。Linux または Unix の場合:
JWS_HOME/tomcat/bin/setenv.sh
Windows の場合:
JWS_HOME/tomcat/bin/setenv.bat
以下のプロパティーを
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>}"