ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理
12cリリース1 (12.1.1)
B65892-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

A JDBCアプリケーション・モジュールのデプロイメントの構成

この章では、エンタープライズ・アプリケーションをパッケージおよびスコーピングする方法について説明します。

エンタープライズ・アプリケーションをパッケージ化する際には、アーカイブにJDBCモジュールをパッケージ化し、適用可能なすべての記述子ファイルのJDBCモジュールへの参照を追加することにより、アプリケーション内にJDBCリソースを含めることができます。アプリケーションをデプロイする場合、JDBCリソースもデプロイされます。JDBCモジュールをどのように構成するかに応じて、アプリケーションとともにデプロイされるJDBCデータ・ソースは、それが含まれるアプリケーションによる使用のみに制限(アプリケーション・スコープのモジュール)されるか、またはすべてのアプリケーションおよびクライアントで使用可能(グローバル・スコープのモジュール)となるかのいずれかです。

次の項では、パッケージ化されたJDBCモジュールの詳細について説明します。

JDBCモジュールとエンタープライズ・アプリケーションのパッケージ化:主な手順

JDBCモジュールとエンタープライズ・アプリケーションの作成、パッケージ化、およびデプロイにおける主な手順は、以下のとおりです。

  1. モジュールを作成します。「パッケージ化JDBCモジュールの作成」を参照してください。

  2. すべての適用可能な記述子ファイル内のモジュールへの参照を追加します。「Java EE記述子ファイルにおけるJDBCモジュールの参照」を参照してください。

  3. EAR内のすべてのアプリケーション・モジュールをパッケージ化します。「エンタープライズ・アプリケーションとJDBCモジュールのパッケージ化」を参照してください。

  4. アプリケーションをデプロイします。「エンタープライズ・アプリケーションとJDBCモジュールのデプロイ」を参照してください。

パッケージ化JDBCモジュールの作成

JDBCアプリケーション・モジュールの作成には、XML記述子ファイルの作成をサポートする任意の開発ツールを使用できます。その後、JDBCモジュールをデプロイおよび管理するには、weblogic.Deployerユーティリティ、管理コンソールなど、JSR 88ベースのツールを使用します。


注意:

管理コンソールを使用してJDBCデータ・ソースを作成した後、アプリケーションで使用するテンプレートとしてモジュールをコピーすることができます。ネームスペース内での名前の競合を避けるため、モジュールをアプリケーションと一緒にデプロイする前に、モジュールのname要素とjndi-name要素を変更する必要があります。


各JDBCモジュールは、データ・ソースまたはマルチ・データ・ソースを表します。データ・ソースを表すモジュールには、そのデータ・ソースの構成パラメータがすべて含まれています。マルチ・データ・ソースを表すモジュールには、そのマルチ・データ・ソースが使用するデータ・ソース・モジュールのリストなどの、マルチ・データ・ソースの構成パラメータが含まれています。

管理コンソールを使用したJDBCデータ・ソース・モジュールの作成

管理コンソールで、アプリケーション・モジュールとして再利用できるデータ・ソース・モジュールを作成するには、以下の手順に従います。

  1. 「JDBCデータ・ソースの作成」の説明に従ってデータ・ソースを作成します。データ・ソース・モジュールは、ドメイン・ディレクトリのconfig/jdbcサブディレクトリ内に作成されます。

  2. アプリケーション内のサブディレクトリにdata-source-name.xmlファイルをコピーし、そのコピーのファイル名を、new-data-source-name-jdbc.xmlのように接尾辞として -jdbcを含むよう変更します。

  3. エディタでファイルを開き、以下の要素を変更します。

    • name - nameを、ドメイン内で一意の名前に変更します。

    • jndi-name - jndi-nameを、エンタープライズ・アプリケーションでローカル・アプリケーション・コンテキスト内のデータ・ソースのルックアップに使用する名前に変更します。

    • scope - 必要に応じて、データ・ソースが、それを含むアプリケーションからのみアクセスされるよう制限するため、モジュールのjdbc-data-source-paramsセクションにscope要素を追加します。たとえば、<scope>Application</scope>となります。「パッケージ化されたJDBCモジュールのアプリケーション・スコープ指定」を参照してください。

  4. 続いて、エンタープライズ・アプリケーションの記述子ファイルへの参照を追加します。「Java EE記述子ファイルにおけるJDBCモジュールの参照」を参照してください。

JDBCパッケージ化モジュールの要件

JDBCモジュールは、以下の条件を満たしている必要があります。

データ・ソースはまた、以下のJDBCドライバ・パラメータを備えている必要があります。

  • url

  • driver-name

  • properties - ユーザー名、パスワードなど、データベース接続を作成するためにJDBCドライバが必要とするすべてのプロパティを含みます。

マルチ・データ・ソース・モジュールはまた、以下のデータ・ソース・パラメータを備えている必要があります。

  • data-source-list - これは、アプリケーションからのデータベース接続リクエストに応じるためにマルチ・データ・ソースが使用する、カンマ区切りのデータ・ソース・モジュール・リストです。


    注意:

    data-source-listにリストされているデータ・ソースはすべて、XAおよびトランザクション・プロトコル設定が同じである必要があります。


その他の構成パラメータはすべて、任意指定であるか、または値が指定されていなければ、WebLogic Serverが使用するデフォルト値となります。ただし、有用なJDBCモジュールを作成するには、アプリケーションおよび環境に必要な追加の構成オプションを指定しなければならない場合があります。

JDBCアプリケーション・モジュールの制限事項

JDBCアプリケーション・モジュールについては、以下の制限事項に留意してください。

  • LoggingLastResourceのglobal-transactions-protocolは、JDBCアプリケーション・モジュールでは使用できません。

  • 本番でアプリケーション・スコープのJDBCリソースとともにアプリケーションをデプロイする場合、リソースがglobal-transactions-protocolにEmulateTwoPhaseCommitを使用していると、同時に複数バージョンのアプリケーションをデプロイすることはできません。

JDBCデータ・ソース・モジュールの作成

JDBCデータ・ソース・モジュール内の主要なセクションは、以下のとおりです。

  • jdbc-driver-paramsには、データベース接続を作成するために使用されるJDBCドライバのエントリ、URLdriver-nameおよび個別ドライバのpropertyエントリが含まれます。その他の有効なエントリについては、jdbc-data-source.xsdスキーマを参照してください。各要素の説明については、Oracle WebLogic Server MBeanリファレンスJDBCDriverParamsBeanに関する項を参照してください。

  • jdbc-connection-pool-params - 接続テスト・オプション、文キャッシュ・オプションなど、接続プールの構成用のエントリを含みます。この要素はまた、initial-capacitymax-capacity、およびプールされたリソースに共通のその他のオプションを含む、weblogic-javaee.xsdスキーマからのconnection-pool-paramsを継承しています。詳細は、次を参照してください。

  • jdbc-data-source-paramsには、jndi-namerow-prefetch-sizeおよびglobal-transactions-protocolなどデータ・ソース動作オプションおよびトランザクション処理オプションのエントリが含まれます。その他の有効なエントリについては、jdbc-data-source.xsdスキーマを参照してください。各要素の説明については、Oracle WebLogic Server MBeanリファレンスJDBCDataSourceParamsBeanを参照してください。

  • jdbc-xa-paramsには、keep-xa-conn-till-tx-completeおよびxa-transaction-timeoutなどXAデータベース接続処理のオプションに関するエントリが含まれます。各要素の説明は、Oracle WebLogic Server MBeanリファレンスJDBCXAParamsBeanに関する項を参照してください。

例A-1に、データ・ソースのJDBCモジュールの例を、いくつかの一般的な構成オプションとともに示します。

例A-1 サンプルJDBCデータ・ソース・モジュール

<jdbc-data-source xsi:schemaLocation="http://www.bea.com/ns/weblogic/90/domain.xsd"
 xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source"
 xmlns:sec="http://www.bea.com/ns/weblogic/90/security"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls">
  <name>examples-demoXA-2</name>
  <jdbc-driver-params>
    <url>jdbc:derby://localhost:1527/examples;create=true</url>
    <driver-name>org.apache.derby.jdbc.ClientXADataSource</driver-name>
    <properties>
      <property>
        <name>user</name>
        <value>examples</value>
      </property>
      <property>
        <name>DatabaseName</name>
        <value>examples</value>
      </property>
    </properties>
    <password-encrypted>{AES}MEK6bPum8M69KRP4FANx3TG/O0iSWRYu2rZGUwnVo6U=</password-encrypted>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <max-capacity>100</max-capacity>
    <connection-reserve-timeout-seconds>25</connection-reserve-timeout-seconds>
    <test-table-name>SQL SELECT 1 FROM SYS.SYSTABLES</test-table-name>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <global-transactions-protocol>TwoPhaseCommit</global-transactions-protocol>
  </jdbc-data-source-params>
</jdbc-data-source>

JDBCマルチ・データ・ソース・モジュールの作成

JDBCマルチ・データ・ソース・モジュールは、データ・ソース・モジュールと比べると非常に単純です。必要とされるメイン・セクションはjdbc-data-source-paramsの1つのみです。マルチ・データ・ソース内のjdbc-data-source-params要素は、データ・ソースの動作オプションではなく、マルチ・データ・ソースの動作オプションを含むという点が異なります。jdbc-data-source-params内の以下のパラメータだけがマルチ・データ・ソースでは有効です。

  • jndi-name (必須)

  • data-source-list (必須)

  • scope

  • algorithm-type

  • connection-pool-failover-callback-handler

  • failover-request-if-busy

各要素の説明については、Oracle WebLogic Server MBeanリファレンスJDBCDataSourceParamsBeanに関する項を参照してください。

例A-2に、データ・ソースのJDBCモジュールの例を、いくつかの一般的な構成オプションとともに示します。

例A-2 JDBCマルチ・データ・ソース・モジュール

<jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source">
  <name>examples-demoXA-multi-data-source</name>
  <jdbc-data-source-params>
    <jndi-name>examples-demoXA -multi-data-source</jndi-name>
    <algorithm-type>Load-Balancing</algorithm-type>
    <data-source-list>examples-demoXA,examples-demoXA-2</data-source-list>
  </jdbc-data-source-params>
</jdbc-data-source>

JDBCモジュールにおけるデータベース・パスワードの暗号化

データ保護のために、JDBCモジュール内のデータベース・パスワードを暗号化することをお薦めします。データベース・パスワードを暗号化するには、WebLogic Serverの暗号化ユーティリティを使用してパスワードを暗号化します - これにより、暗号化されたパスワードが戻されるので、それをJDBCモジュールにpassword-encrypted要素として入力します。WebLogic Serverの暗号化ユーティリティの使い方の詳細は、WebLogic Scripting Toolコマンド・リファレンスの暗号化に関する項を参照してください。

JDBCモジュールを新しいドメインにデプロイする

アプリケーションを開発から本番に移行するなど、JDBCモジュールを、あるドメインから別のドメインに移動するのは、よく行われることです。しかし、WebLogic Server暗号化ユーティリティによって生成される暗号化キーは、新しいドメインに転送することができません。JDBCモジュールを暗号化されたデータベース・パスワードとともに移動する場合は、以下のいずれかを行う必要があります。

パッケージ化されたJDBCモジュールのアプリケーション・スコープ指定

デフォルトでは、アプリケーションにJDBCモジュールをパッケージ化するとき、JDBCリソースはグローバルにスコープ指定されます。つまり、リソースはグローバルJNDIネームスペースにバインドされ、すべてのアプリケーションおよびクライアントで使用可能です。リソースを、それを包含するアプリケーションのみで使用できるように予約するには、JDBCモジュールのjdbc-data-source-params要素に<scope>Application</scope>パラメータを含める必要があります。これにより、リソースはローカル・アプリケーション・ネームスペースにバインドされます。例:

<jdbc-data-source-params>
  <jndi-name>examples-demoXA-2</jndi-name> 
  <scope>Application</scope> 
</jdbc-data-source-params>

アプリケーション・スコープのJDBCモジュールのマルチ・データ・ソース内のデータ・ソースは、やはりアプリケーション・スコープ指定されている必要があります。

Java EE記述子ファイルにおけるJDBCモジュールの参照

JDBCモジュールをエンタープライズ・アプリケーションとパッケージ化する場合、特に以下のものを含む、すべての適用可能な記述子ファイル内のモジュールを参照する必要があります。

図A-1は、EJBアプリケーションの様々な記述子ファイルにおけるエントリ間の関係と、それらがアプリケーションとパッケージ化されたJDBCモジュールをどのように参照しているかを示します。

図A-1 エンタープライズ・アプリケーションにおけるJDBCモジュールと記述子の関係

図A-1の説明が続きます
「図A-1 エンタープライズ・アプリケーションにおけるJDBCモジュールと記述子の関係」の説明

weblogic-application.xmlでのパッケージ化JDBCモジュールの参照

エンタープライズ・アプリケーションにJDBCモジュールを含める際には、アプリケーションとパッケージ化されるweblogic-application.xml記述子ファイルにおいて、各JDBCモジュールをJDBC型のmodule要素としてリストする必要があります。例:

<module>
  <name>data-source-1</name> 
  <type>JDBC</type> 
  <path>datasources/data-source-1-jdbc.xml</path> 
</module>

その他の記述子におけるパッケージ化JDBCモジュール参照

エンタープライズ・アプリケーションにおいて、他のアプリケーション・モジュールが、アプリケーションとパッケージ化されるJDBCモジュールを使用できるようにするには、アプリケーション・モジュールとパッケージ化される記述子ファイルに、以下のエントリを追加する必要があります。

  • アプリケーション・モジュールとパッケージ化されている標準のJava EE記述子ファイル(EJBの場合はejb-jar.xmlなど)に、resource-ref-name参照を追加し、アプリケーションで使用されているデータ・ソースのJNDI名を指定する必要があります。例:

    <resource-ref>
      <res-ref-name>my-data-source</res-ref-name> 
      <res-type>javax.sql.DataSource</res-type> 
      <res-auth>Container</res-auth> 
    </resource-ref>
    

    この例では、my-data-sourceはアプリケーション・モジュールで使用されているデータ・ソース名です。アプリケーションは、次のコードによってデータ・ソースをルックアップします。

    javax.sql.DataSource ds = 
        (javax.sql.DataSource) ctx.lookup("java:comp/env/my-data-source");
    
  • WebLogic固有の記述子ファイル(EJBの場合はweblogic-ejb-jar.xmlなど)においては、データ・ソースのjndi-name要素への各resource-ref-name参照をマップする必要があります。例:

    <resource-description>
      <res-ref-name>my-data-source</res-ref-name>
      <jndi-name>qa-database-1</jndi-name>
    </resource-description>
    

    この例では、標準の記述子からのリソース名(<res-ref-name>my-data-source</res-ref-name>)が、JDBCモジュール内のデータ・ソースのJNDI名(<jndi-name>qa-database-1</jndi-name>)にマップされています。

図A-1は、アプリケーション・モジュールで使用されるデータ・ソース名の、JDBCモジュールのJDBCデータ・ソースのJNDI名へのマッピングを示します。


注意:

アプリケーション・スコープのデータ・ソースの場合、記述子ファイルにこれらのエントリを追加しなければ、アプリケーションはデータ・ソースをルックアップしてデータベース接続を取得することができません。


エンタープライズ・アプリケーションとJDBCモジュールのパッケージ化

他のエンタープライズ・アプリケーションの場合と同様、JDBCモジュールではアプリケーションをパッケージ化します。『Oracle WebLogic Serverアプリケーションの開発』のwlpackageを使用したアプリケーションのパッケージ化に関する項を参照してください。

エンタープライズ・アプリケーションとJDBCモジュールのデプロイ

他のエンタープライズ・アプリケーションの場合と同様、JDBCモジュールではアプリケーションをデプロイします。『Oracle WebLogic Serverアプリケーションの開発』のwldeployを使用したアプリケーションのデプロイに関する項を参照してください。


注意:

本番でアプリケーション・スコープのJDBCリソースとともにアプリケーションをデプロイする場合、リソースがglobal-transactions-protocolにEmulateTwoPhaseCommitを使用していると、同時に複数バージョンのアプリケーションをデプロイすることはできません。


パッケージ化JDBCモジュールからのデータベース接続の取得

エンタープライズ・アプリケーションとパッケージ化されたJDBCモジュールからの接続を取得するには、ローカル環境(java:comp/env)またはJNDIツリーのJDBCモジュールで定義されたデータ・ソースまたはマルチ・データ・ソースをルックアップし、その後データ・ソースまたはマルチ・データ・ソースからの接続をリクエストします。例:

javax.sql.DataSource ds = 
    (javax.sql.DataSource) ctx.lookup("java:comp/env/my-data-source");
java.sql.Connection conn = ds.getConnection();

接続を使い終わったら、必ずその接続を閉じて、データ・ソースの接続プールに戻すようにしてください。

conn.close();