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

前
 
次
 

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

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

エンタープライズ・アプリケーションをパッケージ化する際、JDBCモジュールをアーカイブにパッケージ化し、適用可能なすべてのディスクリプタ・ファイル内のJDBCモジュールに参照を追加することによって、JDBCリソースをアプリケーションに組み入れることができます。アプリケーションをデプロイすると、JDBCリソースも同時にデプロイされます。JDBCモジュールの構成方法に応じて、アプリケーションによってデプロイされたJDBCデータ・ソースは、所属アプリケーション専用に限定されるか(アプリケーション・スコープのモジュール)、または、すべてのアプリケーションとクライアントで使用可能になります(グローバル・スコープのモジュール)。

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

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

エンタープライズ・アプリケーションを使用してJDBCモジュールを作成、パッケージ化、およびデプロイする場合の主要手順は次のとおりです。

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

  2. 適用可能なすべてのディスクリプタ・ファイル内のモジュールに参照を追加します。「Java EEディスクリプタ・ファイルでのJDBCモジュールの参照」を参照してください。

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

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

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

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


注意:

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


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

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

アプリケーション・モジュールとして再使用できるデータ・ソース・モジュールを管理コンソールで作成する手順は次のとおりです。

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

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

  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およびトランザクション・プロトコルの設定が同じである必要があります。


その他のすべての構成パラメータはオプションであるか、値が指定されない場合に使用されるデフォルト値が設定されています。ただし、実用的な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 - 接続プールの構成のエントリが含まれています。接続テスト・オプション、文キャッシュ・オプションなどがあります。この要素は、weblogic-javaee.xsdスキーマからconnection-pool-paramsを継承します。これには、initial-capacitymax-capacity、およびプールされたリソースに共通のその他のオプションも含まれます。詳細は、次を参照してください。

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

  • jdbc-xa-params - XAデータベース接続処理オプションに関するエントリ(keep-xa-conn-till-tx-completexa-transaction-timeoutなど)が含まれます。各要素の説明は、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のencryptユーティリティを使用してパスワードを処理します。このユーティリティによって暗号化されたパスワードが返され、それをpassword-encrypted要素としてJDBCモジュールに含めます。WebLogic Serverのencryptユーティリティの使用法の詳細は、『WebLogic Scripting Toolコマンド・リファレンス』のencryptに関する項を参照してください。

JDBCモジュールの新規ドメインへのデプロイ

JDBCモジュールをドメイン間で移動することは、アプリケーションを開発環境から本番環境に移動する場合などのように、一般的に使われる方法です。ただし、WebLogic Serverのencryptユーティリティにより生成された暗号化キーは、新しいドメインに転送できません。暗号化されたデータベース・パスワードを持つ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モジュールを含める際、各JDBCモジュールを、アプリケーションでパッケージ化されたweblogic-application.xmlディスクリプタ・ファイル内のタイプJDBCmodule要素としてリストする必要があります。次に例を示します。

<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など)で、各resource-ref-name参照をデータ・ソースのjndi-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();