Oracle Event Processingアプリケーションからのリレーショナル・データベース・アクセスのためにJava Database Connectivity (JDBC)を構成できます。
Oracle Event ProcessingではJDBC 4.0がサポートされています。JDBCをダウンロードするには、http://java.sun.com/products/jdbc/download.htmlに移動します。
この章の内容は次のとおりです。
JDBC APIでは、アプリケーションがJDBC APIをサポートするデータベース・サーバーや他のタイプの表形式リソースに接続し相互作用するための、ベンダーに依存しない標準的な方法が提供されます。
データベース・ドライバは、JDBC javax.sql.DataSourceインタフェースを実装して、データベース接続ファクトリを定義できます。アプリケーションはDataSourceオブジェクトを使用して、データベース接続(java.sql.Connection)を取得します。アプリケーションはSQLコマンドを送信し、結果を受信することで、接続を取得し、データ・リソースと相互作用します。
Oracle Event Processingでは、JDBCドライバDataSourceオブジェクトをカプセル化し、あらかじめ決められた接続のプールを管理するDataSource分離が提供されます。また、Oracle WebLogic Server WLConnectionインタフェースでは、Oracleデータ・ソースへのアクセスおよび操作を可能にする方法も提供されます。詳細は、「Oracle Event Processingデータ・ソース」を参照してください。
Oracle Event Processingでは、Oracle 12c Thinドライバが提供されます。オプションで、独自のJDBCドライバを使用できます。「bootclasspathでのデータベース・ドライバへのアクセス」を参照してください。
Oracle Event Processingには、Java SE 7で使用するためのOracle 12c Thinドライバが含まれています。JDBC Thinドライバは、pure JavaのType IVドライバで、アプリケーションおよびアプレットで使用できます。プラットフォームに依存せず、クライアント側に追加のOracleソフトウェアは必要ありません。JDBC Thinドライバは、Oracle DatabaseにアクセスするためにSQL*Netを使用してサーバーと通信します。
Oracle 12c Thinドライバは次のJARファイルにあります。
/Oracle/Middleware/wlserver/modules/com.bea.oracle.ojdbc6_1.0.0.0_11-2-0-3-0.jar
詳細は、次を参照してください。
Oracle Event Processingサーバーでは、使用するJDBCドライバのタイプによって、異なるデータベースがサポートされます。
Oracle JDBCドライバ
Oracle JDBCドライバを使用すると、Oracle Database 12cリリースにアクセスできます。「Oracle JDBCドライバ」を参照してください。
DataDirectのSQL Server Type 4 JDBCドライバ
MicrosoftのSQL Server Type 4 JDBCドライバを使用すると、次のSQL Serverデータベースにアクセスできます。
Microsoft SQL Server 2012
Microsoft SQL Server 2005
Microsoft SQL Server 2000
Microsoft SQL Server 2000 Desktop Engine (MSDE 2000)
Microsoft SQL Server 2000 Enterprise Edition (64ビット)
Microsoft SQL Server 7.0。
Oracle Event Processing DataSourceは、JDBC 4.0仕様をサポートするJDBCデータ・ソース接続プールの実装を提供します。
アプリケーションでは、標準APIのDataSource.getConnectionとConnection.closeを使用して、データ・ソースにあるConnectionオブジェクトの予約と解放を行います。
図12-1は、データソース、接続プールおよびConnectionインスタンス間の関係を示します。
次のいずれかの方法でリレーショナル・データベースにアクセスする場合は、Oracle Event Processingサーバーのデフォルトのデータ・ソースを使用するか、サーバーのconfig.xmlファイルで独自のOracle Event Processing DataSourceを構成する必要があります。Oracle Event Processingスキーマ・リファレンスを参照してください。
Oracle CQLプロセッサのルールの場合
イベントの記録と再生
キャッシュ・ローダーまたはストアの場合
DriverManagerなどのJDBCドライバのAPIをアプリケーション・コードで直接使用する場合、サーバーのconfig.xmlファイルにDataSourceを構成する必要はありません。
デフォルトでは、Oracle Event Processingサーバーがローカルのトランザクション・マネージャを作成します。「JMX構成オブジェクト」の説明のように、トランザクション・マネージャは構成されたRMIオブジェクトに依存します。Oracle Event Processingサーバーはシステムに複数のトランザクション・マネージャ・インスタンスが存在しないことを保証します。
Oracle Event Processingサーバーを起動したときにデータベースが使用できない場合、デフォルトでは、Oracle Event Processingサーバー・データ・ソースは接続が作成されるまで10秒ごとに再試行します。再試行により、データベースが使用できないときのOracle Event Processingサーバーの起動が可能になります。connection-pool-params要素のconnection-creation-retry-frequency-seconds子要素の値を指定することで、再試行間隔を変更できます。値ゼロは、接続の再試行を無効にします。
Oracle Event Processingサーバーのconfig.xmlファイルでは、実行時に作成されるデータ・ソースごとに、外部JDBCモジュール記述子を参照する構成要素が必要です。
構成ウィザードでOracle Event Processingドメインを作成する場合は、必要に応じて、サポートされる2つのDataDirectのJDBCドライバのいずれかを使用するJDBCデータ・ソースを構成できます。この場合、ウィザードによってconfig.xmlファイルが更新されます。データ・ソースを構成するときは、接続先データベース、接続ユーザー名とパスワードなどの基本情報を指定します。
次の例に示すとおり、data-source要素を追加してconfig.xmlファイルを手動で更新することもできます。
<data-source>
<name>rdbms</name>
<data-source-params>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
<connection-pool-params>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<connection-creation-retry-frequency-seconds>
60
</connection-creation-retry-frequency-seconds>
</connection-pool-params>
<driver-params>
<url>jdbc:oracle:thin:@localhost:5521:rdb</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element><name>user</name><value>scott</value></element>
<element><name>password</name><value>tiger</value></element>
</properties>
<use-xa-data-source-interface>true</use-xa-data-source-interface>
</driver-params>
</data-source>
<transaction-manager>
<name>TM</name>
<rmi-service-name>RMI</rmi-service-name>
</transaction-manager>
データ・ソースは、ローカル・トランザクション・マネージャの可用性に依存します。デフォルトのOracle Event Processingサーバー・トランザクション・マネージャに依存するか、例に示すとおり、config.xmlのtransaction-manager要素を使用して構成できます。「JMX構成オブジェクト」の説明のように、トランザクション・マネージャは構成されたRMIオブジェクトに依存します。
Oracle Event Processingサーバーを起動したときにデータベースが使用できない場合、デフォルトでは、Oracle Event Processingサーバー・データ・ソースは接続が作成されるまで10秒ごとに再試行します。再試行により、データベースが使用できないときのOracle Event Processingサーバーの起動が可能になります。例では、connection-pool-params要素のconnection-creation-retry-frequency-seconds子要素の値を指定して、config.xmlファイルで再試行間隔が変更されています。例の値は60秒です。
Oracle WebLogic ServerのAPIリファレンスは、Oracleデータ・ソースの取得および操作方法を含むWLConnectionインタフェースを提供します。たとえば、次のJavaコードは、プールされた接続オブジェクトからネイティブOracleデータベース接続を取得します。
private DataSource ods; private Connection wlConnection; private OracleConnection connection; wlConnection = ods.getConnection(); connection = (OracleConnection) ((WLConnection) wlConnection) .getVendorConnection();
注意:
作業が完了したらプールされた接続を閉じ、プールされた接続を閉じた後はネイティブ接続オブジェクトを使用しないでください。
この項では、Oracle JDBCドライバを使用したデータベースへのアクセスを構成する手順を説明します。
Oracle JDBCドライバはOracle Event Processingにインストール済で使用可能です。
Oracle JDBCドライバを使用したデータベースへのアクセスの構成:
サーバーのconfig.xmlファイルでデータ・ソースを構成します。
Oracle Event Processingサーバーのconfig.xmlファイルを構成ウィザードを使用して更新する場合、スタンドアロンサーバー・ドメインの作成を参照してください。
Oracle Event Processingサーバーのconfig.xmlファイルを手動で更新する場合、カスタムのデータ・ソースの構成を参照してください。
Oracle JDBCドライバのurl要素の形式は次のとおりです。「カスタムのデータソースの構成」も参照してください。
<url>jdbc:oracle:thin:@HOST:PORT:SID</url>
Oracle Event Processingが実行中の場合は、新しいデータ・ソース情報を読み込むために再起動します。
詳細は、「サーバーの起動と停止」を参照してください。
Microsoft SQL server JDBCドライバでデータ・ソースにアクセスするには、wlsqlserv.jarおよびfmwgenerictoken.jarファイルを-Xbootclasspathに追加します。
-Xbootclasspath/a:/Oracle/Middleware/my_oep/oracle_common/modules/datadirect/wlsqlserver.jar:/Oracle/Middleware/my_oep/oracle_common/modules/datadirect/fmwgenerictoken.jar -Xbootclasspath/a:/Oracle/Middleware/oracle_common/modules/datadirect/wlsqlserver.jar:/Oracle/Middleware/oracle_common/modules/datadirect/fmwgenerictoken.jar
次のSQLサーバー・データ・ソース構成をconfig.xmlファイルに追加します。
<data-source>
<name>ds-sqlserver-datadirect-driver</name>
<data-source-params>
<jndi-names />
<global-transactions-protocol>OnePhaseCommit
</global-transactions-protocol>
</data-source-params>
<connection-pool-params>
<credential-mapping-enabled></credential-mapping-enabled>
<test-table-name>SQL SELECT 1</test-table-name>
<initial-capacity>5</initial-capacity>
<max-capacity>20</max-capacity>
<capacity-increment>1</capacity-increment>
</connection-pool-params>
<driver-params>
<use-xa-data-source-interface>true</use-xa-data-source-interface>
<driver-name>weblogic.jdbc.sqlserver.SQLServerDriver</driver-name>
<url>
jdbc:weblogic:sqlserver://hostname:port;databaseName=fmwcerts;SelectMethod=cursor
</url>
<properties>
<element>
<value>sa</value>
<name>user</name>
</element>
<element>
<value>{AES}XcrEKM8RegvOT3jZ4d46WQ==</value>
<name>password</name>
</element>
</properties>
</driver-params>
</data-source>
場合によっては、Oracle Event Processingにバンドルされているバージョン以外のOracle DatabaseドライバまたはDataDirectドライバのバージョン、またはOracle DatabaseドライバまたはDataDirectドライバ以外のデータベース・ドライバを使用する必要があることがあります。
この手順は、bundlerユーティリティを使用してドライバに対するOSGiバンドルを作成してOracle Event Processingサーバー上にデプロイする方法です。
必要に応じて、独自のJDBCドライバにアクセスするためにbootclasspathを使用できます。
かわりに、「bundler.shを使用して構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス」で説明されているように、アプリケーション・ライブラリを使用することをお薦めします。
構成するドメインのサーバー・ディレクトリに移動します。
デフォルトでは、サーバー・ディレクトリは/Oracle/Middleware/my_oep/user_projects/domains/<domainname/<servername>/にあります。
テキスト・エディタで、使用しているプラットフォーム向けの起動スクリプトを開きます。
wlevs.jarファイルを実行するJavaコマンドに-Xbootclasspath/aオプションを追加し、使用するJDBCドライバのフル・パス名を-Xbootclasspath/aオプションに設定します。
たとえば、Windows Oracle Thinドライバを使用するには、すべてを1行にして次のように起動スクリプトでjavaコマンドを更新します。
%JAVA_HOME%\bin\java -Dwlevs.home=%USER_INSTALL_DIR% -Dbea.home=%BEA_HOME%
-Xbootclasspath/a:\Oracle\Middleware\my_oep\oep\bin\com.bea.oracle.ojdbc14_10.2.0.jar
-jar "%USER_INSTALL_DIR%\bin\wlevs_3.0.jar" -disablesecurity %1 %2 %3 %4 %5 %6
サーバーのconfig.xmlファイルでデータ・ソースを構成します。
Oracle Event Processingサーバーのconfig.xmlファイルを構成ウィザードを使用して更新する場合、スタンドアロンサーバー・ドメインの作成を参照してください。
Oracle Event Processingサーバーのconfig.xmlファイルを手動で更新する場合、カスタムのデータ・ソースの構成を参照してください。
Oracle Event Processingが実行中の場合は、新規のjavaオプションとデータ・ソース情報を読み込むために再起動します。
詳細は、「サーバーの起動と停止」を参照してください。