Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 11g リリース1 (10.3.4) B60997-02 |
|
前 |
次 |
エンタープライズ・アプリケーションをパッケージ化する際には、アーカイブにJDBCモジュールをパッケージ化し、適用可能なすべての記述子ファイルのJDBCモジュールへの参照を追加することにより、アプリケーション内にJDBCリソースを含めることができます。アプリケーションをデプロイする場合、JDBCリソースもデプロイされます。JDBCモジュールをどのように構成するかに応じて、アプリケーションとともにデプロイされるJDBCデータ・ソースは、それが含まれるアプリケーションによる使用のみに制限(アプリケーション・スコープのモジュール)されるか、またはすべてのアプリケーションおよびクライアントで使用可能(グローバル・スコープのモジュール)となるかのいずれかです。
次の項では、パッケージ化されたJDBCモジュールの詳細について説明します。
JDBCモジュールとエンタープライズ・アプリケーションの作成、パッケージ化、およびデプロイにおける主な手順は、以下のとおりです。
モジュールを作成します。「パッケージ化JDBCモジュールの作成」を参照してください。
すべての適用可能な記述子ファイル内のモジュールへの参照を追加します。「Java EE記述子ファイルにおけるJDBCモジュールの参照」を参照してください。
EAR内のすべてのアプリケーション・モジュールをパッケージ化します。「エンタープライズ・アプリケーションとJDBCモジュールのパッケージ化」を参照してください。
アプリケーションをデプロイします。「エンタープライズ・アプリケーションとJDBCモジュールのパッケージ化」を参照してください。
JDBCアプリケーション・モジュールの作成には、XML記述子ファイルの作成をサポートする任意の開発ツールを使用できます。その後、JDBCモジュールをデプロイおよび管理するには、weblogic.Deployer
ユーティリティ、管理コンソールなど、JSR 88ベースのツールを使用します。
注意: 管理コンソールを使用してJDBCデータ・ソースを作成した後、アプリケーションで使用するテンプレートとしてモジュールをコピーすることができます。ネームスペース内での名前の競合を避けるため、モジュールをアプリケーションと一緒にデプロイする前に、モジュールのname要素とjndi-name要素を変更する必要があります。 |
各JDBCモジュールは、データ・ソースまたはマルチ・データ・ソースを表します。データ・ソースを表すモジュールには、そのデータ・ソースの構成パラメータがすべて含まれています。マルチ・データ・ソースを表すモジュールには、そのマルチ・データ・ソースが使用するデータ・ソース・モジュールのリストなどの、マルチ・データ・ソースの構成パラメータが含まれています。
管理コンソールで、アプリケーション・モジュールとして再利用できるデータ・ソース・モジュールを作成するには、以下の手順に従います。
「JDBCデータ・ソースの作成」の説明に従ってデータ・ソースを作成します。データ・ソース・モジュールは、ドメイン・ディレクトリのconfig/jdbc
サブディレクトリ内に作成されます。
アプリケーション内のサブディレクトリにdata-source-name.xml
ファイルをコピーし、そのコピーのファイル名を、new-data-source-name-jdbc.xml
のようにサフィックスとして -jdbcを含むよう変更します。
エディタでファイルを開き、以下の要素を変更します。
name
- name
を、ドメイン内で一意の名前に変更します。
jndi-name
- jndi-name
を、エンタープライズ・アプリケーションでローカル・アプリケーション・コンテキスト内のデータ・ソースのルックアップに使用する名前に変更します。
scope
- 必要に応じて、データ・ソースが、それを含むアプリケーションからのみアクセスされるよう制限するため、モジュールのjdbc-data-source-params
セクションにscope
要素を追加します。たとえば、<scope>Application</scope>
となります。「パッケージ化されたJDBCモジュールのアプリケーション・スコープ指定」を参照してください。
続いて、エンタープライズ・アプリケーションの記述子ファイルへの参照を追加します。「Java EE記述子ファイルにおけるJDBCモジュールの参照」を参照してください。
JDBCモジュールは、以下の条件を満たしている必要があります。
jdbc-data-source.xsd
スキーマに準拠しています。このスキーマはhttp://xmlns.oracle.com/weblogic/jdbc-data-source/1.0/jdbc-data-source.xsdにあります。
-jdbc.xml
で終わるファイル名を使用しています。
WebLogicドメイン内で一意のname
要素が含まれています。
データ・ソースはまた、以下のJDBCドライバ・パラメータを備えている必要があります。
url
driver-name
properties
- ユーザー名、パスワードなど、データベース接続を作成するためにJDBCドライバが必要とするすべてのプロパティを含みます。
マルチ・データ・ソース・モジュールはまた、以下のデータ・ソース・パラメータを備えている必要があります。
data-source-list
- これは、アプリケーションからのデータベース接続リクエストに応じるためにマルチ・データ・ソースが使用する、カンマ区切りのデータ・ソース・モジュール・リストです。
注意: data-source-listにリストされているデータ・ソースはすべて、XAおよびトランザクション・プロトコル設定が同じである必要があります。 |
その他の構成パラメータはすべて、任意指定であるか、または値が指定されていなければ、WebLogic Serverが使用するデフォルト値となります。ただし、有用なJDBCモジュールを作成するには、アプリケーションおよび環境に必要な追加の構成オプションを指定しなければならない場合があります。
JDBCアプリケーション・モジュールについては、以下の制限事項に留意してください。
LoggingLastResourceのglobal-transactions-protocolは、JDBCアプリケーション・モジュールでは使用できません。
本番でアプリケーション・スコープのJDBCリソースとともにアプリケーションをデプロイする場合、リソースがglobal-transactions-protocolにEmulateTwoPhaseCommitを使用していると、同時に複数バージョンのアプリケーションをデプロイすることはできません。
JDBCデータ・ソース・モジュール内の主要なセクションは、以下のとおりです。
jdbc-driver-params
には、データベース接続を作成するために使用されるJDBCドライバのエントリ、URL
、driver-name
および個別ドライバのproperties
エントリが含まれます。その他の有効なエントリについては、jdbc-data-source.xsd
スキーマを参照してください。各要素の説明については、Oracle WebLogic Server MBeanリファレンスのJDBCDriverParamsBeanに関する項を参照してください。
jdbc-connection-pool-params
- 接続テスト・オプション、文キャッシュ・オプションなど、接続プールの構成用のエントリを含みます。この要素はまた、initial-capacity
、max-capacity
、およびプールされたリソースに共通のその他のオプションを含む、weblogic-javaee.xsd
スキーマからのconnection-pool-params
を継承しています。詳細は、次を参照してください。
Oracle WebLogic Server MBeanリファレンスのJDBCConnectionPoolParamsBeanに関する項
jdbc-data-source.xsd
スキーマ
jdbc-data-source-params
には、jndi-name
、row-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-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モジュール内のデータベース・パスワードを暗号化することをお薦めします。データベース・パスワードを暗号化するには、WebLogic Serverの暗号化
ユーティリティを使用してパスワードを暗号化します - これにより、暗号化されたパスワードが戻されるので、それをJDBCモジュールにpassword-encrypted
要素として入力します。WebLogic Serverの暗号化ユーティリティの使い方の詳細は、WebLogic Scripting Toolコマンド・リファレンスの暗号化に関する項を参照してください。
アプリケーションを開発から本番に移行するなど、JDBCモジュールを、あるドメインから別のドメインに移動するのは、よく行われることです。しかし、WebLogic Server暗号化ユーティリティによって生成される暗号化キーは、新しいドメインに転送することができません。JDBCモジュールを暗号化されたデータベース・パスワードとともに移動する場合は、以下のいずれかを行う必要があります。
特に新しいドメインに対して暗号化されたパスワードを含むデプロイメント計画内の古い暗号化パスワードをオーバーライドします。Oracle WebLogic Server管理コンソール・ヘルプのデプロイメント計画の更新に関する項を参照してください。
新しいドメイン用のパスワードを再暗号化します。「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モジュールのマルチ・データ・ソース内のデータ・ソースは、やはりアプリケーション・スコープ指定されている必要があります。
JDBCモジュールをエンタープライズ・アプリケーションとパッケージ化する場合、特に以下のものを含む、すべての適用可能な記述子ファイル内のモジュールを参照する必要があります。
weblogic-application.xml
ejb-jar.xml
weblogic-ejb-jar.xml
web.xml
weblogic.xml
図A-1は、EJBアプリケーションの様々な記述子ファイルにおけるエントリ間の関係と、それらがアプリケーションとパッケージ化された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モジュールを使用できるようにするには、アプリケーション・モジュールとパッケージ化される記述子ファイルに、以下のエントリを追加する必要があります。
アプリケーション・モジュールとパッケージ化されている標準の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モジュールではアプリケーションをパッケージ化します。『Oracle WebLogic Serverアプリケーションの開発』のwlpackageを使用したアプリケーションのパッケージ化に関する項を参照してください。
他のエンタープライズ・アプリケーションの場合と同様、JDBCモジュールではアプリケーションをデプロイします。『Oracle WebLogic Serverアプリケーションの開発』のwldeployを使用したアプリケーションのデプロイに関する項を参照してください。
注意: 本番でアプリケーション・スコープのJDBCリソースとともにアプリケーションをデプロイする場合、リソースがglobal-transactions-protocolにEmulateTwoPhaseCommitを使用していると、同時に複数バージョンのアプリケーションをデプロイすることはできません。 |
エンタープライズ・アプリケーションとパッケージ化された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();