ヘッダーをスキップ
Oracle® Complex Event Processing管理者ガイド
11g リリース1(11.1.1.4.0)
B61653-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

13 Oracle CEPで使用するJDBCの構成

この章の内容は次のとおりです。

13.1 Oracle CEPアプリケーションからのデータベース・アクセスの概要

Oracle CEPでは、リレーショナル・データベースへのアクセスのために(http://java.sun.com/products/jdbc/download.html#corespec30を参照してください) Java Database Connectivity (JDBC) 3.0がサポートされています。

JDBC API (http://java.sun.com/javase/technologies/database/index.jspを参照してください)では、APIをサポートするデータベース・サーバーや他のタイプの表形式リソースに接続し相互作用するための、ベンダーに依存しない標準的なメカニズムが提供されます。JDBC javax.sql.DataSourceインタフェースは、ドライバで実装されるデータベース接続ファクトリを指定します。DataSourceオブジェクトのインスタンスは、アプリケーションがデータベース接続(java.sql.Connectionのインスタンス)を取得するために使用されます。接続が取得されると、アプリケーションはSQLコマンドを送信し、結果を受信することで、リソースと相互作用します。

Oracle CEPでは、次のJDBCドライバが提供されます。

オプションで、独自のJDBCドライバを使用できます(13.5.3項「bootclasspathを使用したデータベース・ドライバへのアクセス方法」を参照してください)。

Oracle CEPは、JDBCドライバDataSourceオブジェクトをカプセル化するDataSource抽象を提供し、前に確立されている接続のプールも管理します。Oracle WebLogic Server WLConnectionインタフェースは、Oracleデータ・ソースのアクセスおよび操作に役立つ方法を提供します。詳細は、13.2項「Oracle CEPデータソースの説明」を参照してください。

13.1.1 Oracle JDBCドライバ

Oracle CEPには、次のJARファイルにパッケージされたOracle 11.2 Thinドライバが含まれます。

  • ORACLE_CEP_HOME/modules/com.bea.oracle.ojdbc5_1.0.0.0_11-2-0-0.jar: Java SE 5で使用する場合。

  • ORACLE_CEP_HOME/modules/com.bea.oracle.ojdbc6_1.0.0.0_11-2-0-0.jar: Java SE 6で使用する場合。

JDBC Thinドライバは、pure JavaのType IVドライバで、アプリケーションおよびアプレットで使用できます。プラットフォームに依存せず、クライアント側に追加のOracleソフトウェアは必要ありません。JDBC Thinドライバは、Oracle DatabaseにアクセスするためにSQL*Netを使用してサーバーと通信します。

詳細は、次を参照してください:

13.1.2 DataDirectのSQL Server用のType 4 JDBCドライバ

Oracle CEPでは、SQL ServerデータベースへのJDBCアクセスのパフォーマンスを高めるDataDirectのタイプ4 JDBCドライバが提供されます。タイプ4 JDBCドライバはJava環境にあわせて最適化されているので、Javaテクノロジを組み込んだり、既存システムの機能およびパフォーマンスを拡張したりできます。

DataDirectのOracle CEPタイプ4 JDBCドライバは、以下のような特長を持つ実績のあるドライバです。

  • パフォーマンス指向のエンタープライズ向け機能をサポート(分散トランザクション、SavePoint、複数のオープン結果セット、パラメータ・メタデータなど)。

  • Java EE Compatibility Test Suite (CTS)で認定済み。業界最大のJDBCテスト・スイートにより検証済みです。

  • JDBCアプリケーションのテストおよびデバッグ用ツールを装備。

詳細は、次を参照してください:

13.1.3 サポートされるデータベース

Oracle CEPサーバーでは、使用するJDBCドライバのタイプによって、異なるデータベースがサポートされます。

13.1.3.1 Oracle JDBCドライバでサポートされるデータベース

Oracle JDBCドライバを使用して、次のOracleデータベースにアクセスできます。

  • Oracleデータベース11gリリース2 (11.2)

詳細は、13.1.1項「Oracle JDBCドライバ」を参照してください。

13.1.3.2 DataDirectのSQL Server用のType 4 JDBCドライバでサポートされるデータベース

DataDirectのSQL Serverタイプ4 JDBCドライバを使用して、次のSQL Serverデータベースにアクセスできます。

  • 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

詳細は、13.1.2項「DataDirectのSQL Server用のType 4 JDBCドライバ」を参照してください。

13.2 Oracle CEPデータ・ソースの説明

Oracle CEP DataSourceは、Java Database Connectivity (JDBC 3.0)仕様をサポートするJDBCデータソース接続プールの実装を提供します。アプリケーションでは、標準APIのDataSource.getConnectionConnection.closeを使用して、データソースにあるConnectionオブジェクトの予約と解放を行います。

図13-1は、データソース、接続プールおよびConnectionインスタンス間の関係を示します。

図13-1 Oracle CEPデータソース

図13-1の説明が続きます
「図13-1 Oracle CEPデータソース」の説明

リレーショナル・データベースにアクセスする場合は、Oracle CEPサーバーのデフォルトのデータソースを使用するかサーバーのconfig.xmlファイルで独自のOracle CEP DataSourceを構成します。

DriverManagerなどのJDBCドライバのAPIをアプリケーション・コードで直接使用する場合、サーバーのconfig.xmlファイルにDataSourceを構成する必要はありません。

詳細は、次を参照してください:

13.2.1 デフォルト・データ・ソースの構成

デフォルトでは、Oracle CEPサーバーがローカルのトランザクション・マネージャを作成します。12.2.2項「rmi構成オブジェクト」の説明のように、トランザクション・マネージャは構成されたRMIオブジェクトに依存します。Oracle CEPサーバーはシステムに複数のトランザクション・マネージャ・インスタンスが存在しないことを保証します。

Oracle CEPサーバーの起動時にデータベースが使用できない場合、デフォルトで、Oracle CEPサーバー・データソースは接続が作成できるまで10秒ごとに再試行します。この結果、Oracle CEPサーバーは、データベースが使用できない場合も、正常に起動されます。connection-pool-params要素connection-creation-retry-frequency-seconds子要素を使用してOracle CEPサーバーconfig.xmlファイルでの再試行の間隔を変更することができます。この要素の値をゼロに設定すると、接続の再試行が無効になります。

詳細は、13.2.2項「カスタム・データ・ソースの構成」を参照してください。

13.2.2 カスタム・データ・ソースの構成

Oracle CEPサーバーのconfig.xmlファイルでは、実行時に作成されるデータソースごとに、外部JDBCモジュール記述子を参照する構成要素が必要です。

この項では、カスタム・データソースを構成する方法を説明します。デフォルト・データソースの構成の詳細は、13.2.1項「デフォルト・データソースの構成」を参照してください。

構成ウィザードを使用してOracle CEPドメインを作成する場合は、必要に応じて、DataDirectの2つのJDBCドライバのいずれかを使用するJDBCデータソースを構成できます(この構成を行った場合は自動的にconfig.xmlファイルが更新されます)。接続先データベース、接続ユーザー名とパスワードなどの基本情報を指定してデータソースを構成します。構成ウィザードを使用してドメインの既存のサーバーを更新し、新しいデータソースを追加することもできます。

詳細は、次を参照してください:

  • 『Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロン・サーバー・ドメインの作成と更新に関する項

  • 『Oracle Complex Event Processing管理者ガイド』のOracle CEPマルチサーバー・ドメインの作成と更新に関する項

また、例13-1で示すように、data-source要素を追加してconfig.xmlファイルを手動で更新することもできます。

例13-1 Oracle CEPサーバー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 CEPサーバー・トランザクション・マネージャに依存するか、config.xmltransaction-manager要素を使用して構成できます。例13-1を参照してください。一方、トランザクション・マネージャは、構成されたRMIオブジェクトに依存します。12.2.2項「rmi構成オブジェクト」を参照してください。

Oracle CEPサーバーを起動するときにデータベースが使用できない場合、デフォルトで、Oracle CEPサーバー・データソースが接続を作成できるまで10秒ごとに再試行します。この結果、Oracle CEPサーバーは、データベースが使用できない場合も、正常に起動されます。connection-pool-params要素connection-creation-retry-frequency-seconds子要素を使用してOracle CEPサーバーconfig.xmlファイルでの再試行の間隔を変更することができます。例13-1を参照してください。この要素の値をゼロに設定すると、接続の再試行が無効になります。

data-source要素の子要素の詳細なリスト(特に、connection-pool-paramsおよびdata-source-params要素)は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のサーバー構成XSDスキーマ: wlevs_server_config.xsdに関する項を参照してください。

JDBCに影響するセキュリティ構成タスクの詳細は、10.8.3「JDBCセキュリティの構成」を参照してください。

13.2.3 ネイティブJDBC接続の取得

『Oracle Fusion Middleware 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();

注意:

プールされた接続を使用して作業が完了したら必ず閉じ、プールされた接続を閉じた後でネイティブ接続オブジェクトを使用しないでください。

13.3 Oracle JDBCドライバを使用したデータベースへのアクセスの構成

Oracle JDBCドライバはOracle CEPで自動的にインストールされて使用可能です。詳細は、13.1.1項「Oracle JDBCドライバ」を参照してください。

Oracle JDBCドライバを使用してデータベースへのアクセスを構成するには:

  1. サーバーのconfig.xmlファイルでデータソースを構成します。

    1. 構成ウィザードを使用してOracle CEPサーバーconfig.xmlファイルを更新する場合、『Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロンサーバー・ドメインの作成と更新に関する項を参照してください。

    2. Oracle CEPサーバーconfig.xmlファイルを手動で更新する場合、13.2.2項「カスタムのデータソースの構成」を参照してください。


    注意:

    Oracle JDBCドライバのurl要素は次の形式です。
    <url>jdbc:oracle:thin:@HOST:PORT:SID</url>
    

  2. Oracle CEPが実行中の場合は、新しいデータソース情報を読み込むために再起動します。

    詳細は、1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。

13.4 Data DirectのType 4 JDBCドライバを使用したデータベースへのアクセスの構成

SQL Server用のDataDirectのType 4 JDBCドライバはOracle CEPで自動的にインストールされ使用可能です。詳細は、13.1.2項「SQL Server用のDataDirectのType 4 JDBCドライバ」を参照してください。

Data Directのタイプ4 JDBCドライバを使用したデータベースへのアクセスを構成するには:

  1. サーバーのconfig.xmlファイルでデータソースを構成します。

    1. 構成ウィザードを使用してOracle CEPサーバーconfig.xmlファイルを更新する場合、『Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロンサーバー・ドメインの作成と更新に関する項を参照してください。

    2. Oracle CEPサーバーconfig.xmlファイルを手動で更新する場合、13.2.2項「カスタムのデータソースの構成」を参照してください。


    注意:

    DataDirectのタイプ4 JDBCドライバのurl要素は次の形式です。
    <url>jdbc:weblogic:sqlserver://HOST:PORT</url>
    

  2. Oracle CEPが実行中の場合は、新しいデータソース情報を読み込むために再起動します。

    詳細は、1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。

13.5 別のデータベース・ドライバまたはドライバのバージョンへのアクセスの構成

必要に応じて、Oracle CEPにバンドルされているバージョン以外のOracleデータベース・ドライバまたはデータ・ダイレクト・ドライバのバージョン、またはOracleデータベース・ドライバまたはデータ・ダイレクト・ドライバ以外のデータベース・ドライバを使用する必要がある場合があります。

ここでは、以下の項目について説明します。

13.5.1 bundler.shを使用して構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法

この手順は、bundlerユーティリティを使用してドライバに対するOSGiバンドルを作成してOracle CEPサーバー上にデプロイする方法です。

これはお薦めの方法です。アクティベータの実装を手動で構成する場合は、13.5.2項「Oracle CEP IDE for Eclipseによってビルドされたアプリケーション・ライブラリを使用したデータベース・ドライバにアクセスする方法」を参照してください。

詳細は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のアプリケーション・ライブラリの作成に関する項を参照してください。

bundler.shを使用して構築されるアプリケーション・ライブラリを使用してデータベース・ドライバにアクセスするには:

  1. 『Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項で説明されているように、環境を設定します。

  2. bundler.shスクリプトを実行して、ドライバを含むOSGiバンドルを作成します。

    bundler.shスクリプトは、ORACLE_CEP_HOME/ocep_11.1/binディレクトリにあります。ORACLE_CEP_HOMEは、Oracle CEPサーバーのインストール先のディレクトリです。

    例13-2は、bundler.shコマンド・ライン・オプションを示し、表13-1は、これらのオプションを説明します。

    例13-2 bundler.shコマンド・ライン・オプション

    bundler.sh
        -source <jar> 
        -name <name> 
        -version <version> 
        [-factory <class>+] 
        [-service <interface>+] 
        [-stagedir <path>] 
        [-targetdir <path>] 
    

    表13-1 bundler.shコマンド・ライン・オプション

    引数 説明

    -source

    バンドルするソースJARファイルのパス。

    -name

    バンドルのシンボリック名。ターゲットJARファイル名のルートは名前の値から導出されています。

    -version

    バンドル・バージョン番号。すべてのエクスポートされたパッケージは、この値のバージョン属性で修飾されます。ターゲットJARファイル名には、バージョン番号が含まれています。

    -factory

    OSGiサービスとしてインスタンス化および登録される1つ以上のファクトリ・クラスのスペース区切りリストを指定するオプションの引数。各サービスは、OSGiサービス・レジストリに名前(-name)とバージョン(-version)プロパティとともに登録されます。

    -service

    各ファクトリ・オブジェクト・サービス登録のオブジェクト・クラスとして使用する1つ以上のJavaインタフェースのスペース区切りリストを指定するオプションの引数。インタフェース名を指定していない場合、または指定したインタフェース数がファクトリ・クラス数と一致していない場合、各ファクトリ・オブジェクトはファクトリ・クラス名で登録されます。

    -stagedir

    ターゲットJARファイル作成時の一時ファイルの書込み先を指定するオプションの引数。

    デフォルト: ./bundler.tmp

    -targetdir

    生成されたバンドルJARファイルの場所を指定するオプションの引数。

    デフォルト: 現在の作業ディレクトリ(.)


    例13-3は、bundler.shを使用してOracle JDBCドライバ用のOSGiバンドルを作成する方法を示します。

    例13-3 Bundlerユーティリティの使用

    bundler.sh \
        -source C:\drivers\com.oracle.ojdbc14_11.2.0.jar \
        -name oracle11g \
        -version 11.2.0 \
        -factory oracle.jdbc.xa.client.OracleXADataSource oracle.jdbc.OracleDriver \
        -service javax.sql.XADataSource java.sql.Driver \
        -targetdir C:\stage
    

    ソースJARは、C:\driversディレクトリにあるOracleドライバです。生成されたバンドルJARの名前は、-name-version引数(oracle10g_11.2.0.jar)の連結で、C:\stageディレクトリに作成されます。バンドルJARには、例13-4に示すファイルがあります。

    例13-4 バンドルJARコンテンツ

       1465 Thu Jun 29 17:54:04 EDT 2006 META-INF/MANIFEST.MF
    1540457 Thu May 11 00:37:46 EDT 2006 com.oracle.ojdbc14_11.2.0.jar
       1700 Thu Jun 29 17:54:04 EDT 2006 com/bea/core/tools/bundler/Activator.class
    

    コマンド・ライン・オプションによって、バンドルがアクティブ化のときにOSGiサービスとしてインスタンス化および登録される2つのファクトリ・クラスがあることを指定します。表13-2で示すように、各ファクトリ・クラスは別々のオブジェクト・クラスにあります。

    表13-2 ファクトリ・クラスおよびサービス・インタフェース

    ファクトリ・クラス サービス・インタフェース

    oracle.jdbc.xa.client.OracleXADataSource

    javax.sql.XADataSource

    oracle.jdbc.OracleDriver

    java.sql.Driver


    各サービスは、nameプロパティをoracle11gに設定し、versionプロパティを11.2.0の値で登録します。例13-5は、サービスの登録を示すOracle CEPサーバー・ログ・メッセージです。

    例13-5 サービス登録ログ・メッセージ

    ...
    INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=11.2.0, name=oracle11g, objectClass=[ javax.sql.XADataSource ], service.id=23 }
    INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=11.2.0, name=oracle11g, objectClass=[ java.sql.Driver ], service.id=24 }
    INFO: [Jun 29, 2006 5:54:18 PM] Bundle oracle11g STARTED
    ...
    
  3. Oracle CEPサーバー・ライブラリ拡張ディレクトリに、バンドルJARをコピーします。

    Oracle CEPアプリケーションは、ドライバを含むアプリケーション・ライブラリであるため、DOMAIN_DIR/servername/modules/extディレクトリというOracle CEPサーバー・ライブラリ拡張ディレクトリにコピーします。DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリであり、servernameは、myserverなどのサーバー・インスタンスです。例:

    c:\oracle_cep\user_projects\domains\mydomain\myserver\modules\ext
    

    詳細は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のライブラリ拡張ディレクトリに関する項を参照してください。

  4. Oracle CEPサーバーのconfig.xmlファイルで、使用するドライバ・バージョンに対するカスタムdata-source要素を作成し、driver-params子要素を追加します(例13-6を参照してください)。詳細は、1.3.1項「Oracle CEPサーバー構成ファイル」を参照してください。

    例13-6 driver-params子要素

        <driver-params>
          <url>jdbc:oracle:thin:@lcw2k18:1531:lcw101</url>
          <driver-name>oracle.jdbc.xa.client.OracleXADataSource</driver-name
          <properties>
            <element>
              <name>user</name>
              <value>scott</value>
            </element>
            <element>
              <name>password</name>
              <value>{3DES}EoIfSBMhnW8=</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceName</name>
              <value>oracle11g</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceVersion</name>
              <value>11.2.0</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceObjectClass</name>
              <value>javax.sql.XADataSource</value>
            </element>
          </properties>
          <use-xa-data-source-interface>true</use-xa-data-source-interface>
        </driver-params>
    

    表13-4では、関連プロパティを説明します。

    表13-3 driver-params子要素プロパティ

    プロパティ 説明

    com.bea.core.datasource.serviceName

    serviceName登録プロパティの値を指定します。

    ActivatorクラスのNAMEプロパティに一致する必要があります。

    com.bea.core.datasource.serviceVersion

    serviceVersion登録プロパティの値を指定します。

    ActivatorクラスのVERSIONプロパティに一致する必要があります。

    com.bea.core.datasource.serviceObjectClass

    OSGIサービス登録のインタフェース名を指定します。


    詳細は、13.2.2項「カスタム・データ・ソースの構成」を参照してください。

  5. Oracle CEPサーバーを停止および開始します。

    詳細は、1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。

13.5.2 Oracle CEP IDE for Eclipseで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法

この手順は、Oracle CEP IDE for Eclipseを使用してドライバに対するOSGiバンドルを作成してOracle CEPサーバー上にデプロイする方法です。

これはお薦めの方法です。アクティベータの実装を手動で構成する場合は、13.5.1項「bundler.shによってビルドされたアプリケーション・ライブラリを使用したデータベース・ドライバにアクセスする方法」を参照してください。

詳細は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のアプリケーション・ライブラリの作成に関する項を参照してください。

Oracle CEP IDE for Eclipseで構築されるアプリケーション・ライブラリを使用してデータベース・ドライバにアクセスするには:

  1. Oracle CEP IDE for Eclipseを使用して、新しいOracle CEPプロジェクトを作成します。

    詳細は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のOracle CEPプロジェクトの作成に関する項を参照してください。

  2. プロジェクト・フォルダを右クリックして、「新規」>「フォルダ」を選択します。

  3. 「フォルダ名」フィールドにlibと入力し、「終了」をクリックします。

  4. Oracle CEP IDE for Eclipseの外で、JDBC JARファイルをlibフォルダにコピーします。

  5. Oracle CEP IDE for Eclipse内で、libフォルダを右クリックして、「リフレッシュ」を選択します。

    図13-2に表示されているように、JARファイルがlibフォルダに表示されます。

    図13-2 Oracle CEP IDE for Eclipse libディレクトリ

    図13-2の説明が続きます
    「図13-2 Oracle CEP IDE for Eclipseのlibディレクトリ」の説明

  6. srcディレクトリを右クリックして、「新規」>「クラス」を選択します。

    図13-3で示すように、Javaクラスダイアログが表示されます。

    図13-3 「新規Javaクラス」ダイアログ

    図13-3の説明が続きます
    「図13-3 新規Javaクラスダイアログ」の説明

  7. 表13-4で示すように、新規Javaクラスダイアログを構成します。

    表13-4 新規Javaクラス・パラメータ

    パラメータ 説明

    「パッケージ」

    パッケージの名前。たとえば、com.fooを指定します。

    「名前」

    クラスの名前。たとえば、MyActivatorを指定します。


    その他のパラメータはデフォルト値のままにします。

  8. 「終了」をクリックします。

    新規のJavaクラスがプロジェクトに追加されます。

  9. 例13-7で示すように、実装するためにJavaクラスを編集します。

    JDBCドライバの既存のバージョンを差し代えるように、NAMEおよびVERSIONを設定します。この例では既存のバージョンは、次のとおりです。

    • oracle10g

    • 10.0.0

    既存のバージョンを差し代えるために、MyActivatorクラスではこれらの値を次の値に設定します。

    • oracle11g

    • 11.2.0

    例13-7 MyActivatorクラスの実装

    package com.foo;
     
    import java.util.Dictionary;
    import java.util.Properties;
     
    import javax.sql.XADataSource;
    import java.sql.Driver;
     
    import org.osgi.framework.BundleActivator;
    import org.osgi.framework.BundleContext;
    import org.osgi.framework.ServiceRegistration;
     
    public class MyActivator implements BundleActivator {
      
      private static final String NAME="oracle11g";
      private static final String VERSION="11.2.0";
      
      private String[] factories = {"oracle.jdbc.xa.client.OracleXADataSource","oracle.jdbc.OracleDriver"};
      private String[] interfaces= {"javax.sql.XADataSource","java.sql.Driver"};
      private ServiceRegistration[] serviceRegistrations = new ServiceRegistration[factories.length];
      
      public void start(BundleContext bc) throws Exception {
        Dictionary props = new Properties();
        props.put("name", NAME);
        props.put("version", VERSION);
        for (int i=0; i<factories.length; i++) {
          Object svc = bc.getBundle().loadClass(factories[i]).newInstance();
          serviceRegistrations[i] = bc.registerService(interfaces[i], svc, props);
        }
      }
     
      public void stop(BundleContext bc) throws Exception {
        for (int i=0; i<serviceRegistrations.length; i++) {
          serviceRegistrations[i].unregister();
        }
      }
    }
    
  10. META-INF/MANIFEST.MFファイルを右クリックして、次で開く>プラグイン・マニフェスト・エディタを選択します。

    図13-4で示すように、マニフェスト・エディタが表示されます。

    図13-4 マニフェスト・エディタ:「概要」タブ

    図13-4の説明が続きます
    「図13-4 マニフェスト・エディタ:「概要」タブ」の説明

  11. 「ランタイム」タブをクリックします。

    図13-5で示すように、「ランタイム」タブが表示されます。

    図13-5 マニフェスト・エディタ:「ランタイム」タブ

    図13-5の説明が続きます
    「図13-5 マニフェスト・エディタ:「ランタイム」タブ」の説明

  12. 「クラスパス」ペインで、「追加」をクリックします。

    図13-6で示すように、JAR選択ダイアログが表示されます。

    図13-6 JAR選択ダイアログ

    図13-6の説明が続きます
    「図13-6 JAR選択ダイアログ」の説明

  13. libディレクトリを展開して、使用するデータベース・ドライバJARファイルを選択します。

  14. 「OK」をクリックします。

  15. 「依存関係」タブをクリックします。

    図13-7で示すように、「依存関係」タブが表示されます。

    図13-7 マニフェスト・エディタ:「依存関係」タブ

    図13-7の説明が続きます
    「図13-7 マニフェスト・エディタ:「依存関係」タブ」の説明

  16. インポートされたパッケージペインで、「追加」をクリックします。

    図13-8で示すように、パッケージ選択ダイアログが表示されます。

    図13-8 パッケージ選択ダイアログ

    図13-8の説明が続きます
    「図13-8 パッケージ選択ダイアログ」の説明

  17. エクスポートされたパッケージフィールドで、org.osgi.frameworkを入力します。

    図13-8で示すように、リスト・ボックスには、その接頭辞の付いているすべてのパッケージが表示されます。

  18. リスト・ボックスでorg.osgi.frameworkを選択して、「OK」をクリックします。

  19. MANIFEST.MFタブをクリックします。

    図13-9で示すように、MANIFEST.MFタブが表示されます。

    図13-9 マニフェスト・エディタ

    図13-9の説明が続きます
    「図13-9 マニフェスト・エディタ」の説明

  20. 例13-8で示すように、データベース・ドライバJARを一時ディレクトリに解凍します。

    例13-8 データベース・ドライバの解凍

    $ pwd
    /tmp
    $ ls com.*
    com.bea.oracle.ojdbc6_1.0.0.0_11-1-0-7.jar
    $ mkdir driver
    $ cd driver
    $ jar -xvf ../com.bea.oracle.ojdbc6_1.0.0.0_11-1-0-7.jar
    $ ls
    META-INF  oracle
    $ cd META-INF
    $ ls
    MANIFEST.MF  services
    
  21. 例13-9で示すように、データベース・ドライバJAR MANIFEST.MFファイルを開いて、Export-Packageエントリをコピーし、マニフェスト・エディタに貼り付けます。

    例13-9 マニフェスト・エディタへのエクスポート・パッケージの追加

    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: %project.name
    Bundle-SymbolicName: JDBCDriver
    Bundle-Version: 1.0.0
    Bundle-Localization: bundle
    Bundle-Vendor: %project.vendor
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    Bundle-ClassPath: .
    Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
    Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7,oracle.core.l
     vf;version=1.0.0.0_11-1-0-7,oracle.jdbc;version=1.0.0.0_11-1-0-7,orac
     le.jdbc.aq;version=1.0.0.0_11-1-0-7,oracle.jdbc.connector;version=1.0
     .0.0_11-1-0-7,oracle.jdbc.dcn;version=1.0.0.0_11-1-0-7,oracle.jdbc.dr
     iver;version=1.0.0.0_11-1-0-7,oracle.jdbc.internal;version=1.0.0.0_11
     -1-0-7,oracle.jdbc.oci;version=1.0.0.0_11-1-0-7,oracle.jdbc.oracore;v
     ersion=1.0.0.0_11-1-0-7,oracle.jdbc.pool;version=1.0.0.0_11-1-0-7,ora
     cle.jdbc.rowset;version=1.0.0.0_11-1-0-7,oracle.jdbc.util;version=1.0
     .0.0_11-1-0-7,oracle.jdbc.xa;version=1.0.0.0_11-1-0-7,oracle.jdbc.xa.
     client;version=1.0.0.0_11-1-0-7,oracle.jpub.runtime;version=1.0.0.0_1
     1-1-0-7,oracle.net.ano;version=1.0.0.0_11-1-0-7,oracle.net.aso;versio
     n=1.0.0.0_11-1-0-7,oracle.net.jndi;version=1.0.0.0_11-1-0-7,oracle.ne
     t.ns;version=1.0.0.0_11-1-0-7,oracle.net.nt;version=1.0.0.0_11-1-0-7,
     oracle.net.resolver;version=1.0.0.0_11-1-0-7,oracle.security.o3logon;
     version=1.0.0.0_11-1-0-7,oracle.security.o5logon;version=1.0.0.0_11-1
     -0-7,oracle.sql;version=1.0.0.0_11-1-0-7,oracle.sql.converter;version
     =1.0.0.0_11-1-0-7
    
  22. 例13-10で示すように、マニフェスト・エディタにBundle-Activator要素を追加します。

    Bundle-Activatorの値は、Activatorクラスの完全修飾クラス名です。

    例13-10 マニフェスト・エディタへのBundle-Activator要素の追加

    Manifest-Version: 1.0
    Bundle-Activator: com.foo.MyActivator
    Bundle-ManifestVersion: 2
    Bundle-Name: %project.name
    Bundle-SymbolicName: JDBCDriver
    Bundle-Version: 1.0.0
    Bundle-Localization: bundle
    Bundle-Vendor: %project.vendor
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    Bundle-ClassPath: .
    Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
    Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7, ...
    ...
    
  23. 例13-11で示すように、マニフェスト・エディタにDynamicImport-Package要素を追加します。

    例13-11 マニフェスト・エディタへのDynamicImport-Package要素の追加

    Manifest-Version: 1.0
    Bundle-Activator: com.foo.MyActivator
    Bundle-ManifestVersion: 2
    Bundle-Name: %project.name
    Bundle-SymbolicName: JDBCDriver
    Bundle-Version: 1.0.0
    Bundle-Localization: bundle
    Bundle-Vendor: %project.vendor
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    Bundle-ClassPath: .
    DynamicImport-Package: * 
    Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
    Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7, ...
    ...
    
  24. Oracle CEPアプリケーションをJARファイルにエクスポートします。

    詳細は、『Oracle Complex Event Processing開発者ガイドfor Eclipse』のOracle CEPプロジェクトをエクスポートする方法に関する項を参照してください。

    Oracle CEPアプリケーションは、ドライバを含むアプリケーション・ライブラリであるため、エクスポートされたJARをOracle CEPサーバー・ライブラリ拡張ディレクトリにコピーします。

    Oracle CEPサーバー・ライブラリ拡張ディレクトリは、DOMAIN_DIR/servername/modules/extディレクトリです。DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリであり、servernameは、myserverなどのサーバー・インスタンスです。例:

    c:\oracle_cep\user_projects\domains\mydomain\myserver\modules\ext
    
  25. Oracle CEPサーバーのconfig.xmlファイルで、使用するドライバ・バージョンに対するカスタムdata-source要素を作成し、driver-params子要素を追加します(例13-12を参照してください)。詳細は、1.3.1項「Oracle CEPサーバー構成ファイル」を参照してください。

    例13-12 driver-params子要素

        <driver-params>
          <url>jdbc:oracle:thin:@lcw2k18:1531:lcw101</url>
          <driver-name>oracle.jdbc.xa.client.OracleXADataSource</driver-name
          <properties>
            <element>
              <name>user</name>
              <value>scott</value>
            </element>
            <element>
              <name>password</name>
              <value>{3DES}EoIfSBMhnW8=</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceName</name>
              <value>oracle11g</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceVersion</name>
              <value>11.2.0</value>
            </element>
            <element>
              <name>com.bea.core.datasource.serviceObjectClass</name>
              <value>javax.sql.XADataSource</value>
            </element>
          </properties>
          <use-xa-data-source-interface>true</use-xa-data-source-interface>
        </driver-params>
    

    表13-5では、関連プロパティを説明します。

    表13-5 driver-params子要素プロパティ

    プロパティ 説明

    com.bea.core.datasource.serviceName

    serviceName登録プロパティの値を指定します。

    ActivatorクラスのNAMEプロパティに一致する必要があります。

    com.bea.core.datasource.serviceVersion

    serviceVersion登録プロパティの値を指定します。

    ActivatorクラスのVERSIONプロパティに一致する必要があります。

    com.bea.core.datasource.serviceObjectClass

    OSGIサービス登録のインタフェース名を指定します。


    詳細は、13.2.2項「カスタム・データ・ソースの構成」を参照してください。

  26. Oracle CEPサーバーを停止および開始します。

    詳細は、1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。

13.5.3 bootclasspathを使用したデータベース・ドライバにアクセスする方法

必要に応じて、Oracle CEPで独自のJDBCドライバにアクセスするためにbootclasspathを使用することができます。

13.5.1項「bundler.shによってビルドされたアプリケーション・ライブラリを使用したデータベース・ドライバにアクセスする方法」または13.5.2項「Oracle CEP IDE for Eclipseによってビルドされたアプリケーション・ライブラリを使用したデータベース・ドライバにアクセスする方法」で説明されているように、かわりにアプリケーション・ライブラリを使用することをお薦めします。

bootclasspathを使用してデータベース・ドライバにアクセスするには:

  1. Oracle CEP起動時に適切なJDBCドライバのJARファイルが検索されるように、ドメイン・ディレクトリのサーバー・ディレクトリにあるサーバー起動スクリプトを更新します。

    サーバー起動スクリプトの名前はstartwlevs.cmd(Windows)またはstartwlevs.sh(UNIX)で、スクリプトは使用するドメイン・ディレクトリのサーバー・ディレクトリにあります。即時利用可能サンプル・ドメインはORACLE_CEP_HOME/ocep_11.1/samples/domainsにあります。ユーザー・ドメインはORACLE_CEP_HOME/user_projects/domainsにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle CEPインストール・ディレクトリです。

    wlevs_3.0.jarファイルを実行するJavaコマンドに-Xbootclasspath/aオプションを追加して、起動スクリプトを更新します。使用するJDBCドライバのフルパス名を-Xbootclasspath/aオプションに設定します。

    たとえば、Windows Oracle Thinドライバを使用する場合は、次のとおりに起動スクリプトのjavaコマンドを更新します。更新されたセクションは、太字で示します(読みやすくするために区切ってありますが、実際にはコマンドは1行にする必要があります)。

    %JAVA_HOME%\bin\java -Dwlevs.home=%USER_INSTALL_DIR% -Dbea.home=%BEA_HOME%  
    -Xbootclasspath/a:%USER_INSTALL_DIR%\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 
    

    この例では、%USER_INSTALL_DIR%ORACLE_CEP_HOME\ocep_11.1を示しています。

  2. サーバーのconfig.xmlファイルでデータソースを構成します。

    1. 構成ウィザードを使用してOracle CEPサーバーconfig.xmlファイルを更新する場合、『Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロンサーバー・ドメインの作成と更新に関する項を参照してください。

    2. Oracle CEPサーバーconfig.xmlファイルを手動で更新する場合、13.2.2項「カスタムのデータソースの構成」を参照してください。

  3. Oracle CEPが実行中の場合は、新規のjavaオプションとデータソース情報を読み込むために再起動します。

    詳細は、1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。