A JDBCアプリケーション・モジュールのデプロイメントの構成
ノート:
Java EE 6で導入されたDatasourceDefinition機能以前の、WebLogic Serverによって提供される独自のメカニズムについてさらに学習するには、『Oracle WebLogic Server JDBCアプリケーションの開発』のJava EE DataSourceリソース定義の使用に関する項を参照してください。
- エンタープライズ・アプリケーションによるJDBCモジュールのパッケージ化: 主要ステップ
エンタープライズ・アプリケーションでJDBCモジュールを作成、パッケージ化、およびデプロイするステップについて学習します。 - パッケージ化JDBCモジュールの作成
XMLディスクリプタ・ファイルの作成をサポートする任意の開発ツールを使用して、JDBCアプリケーション・モジュールを作成できます。 - Java EEディスクリプタ・ファイルでのJDBCモジュールの参照
Java EE記述子ファイル内でのJDBCモジュールの参照について学習します。 - JDBCモジュールによるエンタープライズ・アプリケーションのパッケージ化
JDBCモジュールでアプリケーションをパッケージ化する方法について学習します。 - JDBCモジュールによるエンタープライズ・アプリケーションのデプロイ
JDBCモジュールを使用してエンタープライズ・アプリケーションをデプロイする方法について学習します。 - パッケージ化されたJDBCモジュールからのデータベース接続の取得
エンタープライズ・アプリケーションでパッケージ化されたJDBCモジュールから接続を取得するには、ローカル環境(java:comp/env
)またはJNDIツリーで、JDBCモジュール内に定義されたデータ・ソースを検索してから、データ・ソースまたはマルチ・データ・ソースに接続をリクエストします。
エンタープライズ・アプリケーションによるJDBCモジュールのパッケージ化: 主要ステップ
エンタープライズ・アプリケーションでJDBCモジュールを作成、パッケージ化、およびデプロイするステップについて学習します。
エンタープライズ・アプリケーションを使用してJDBCモジュールを作成、パッケージ化、およびデプロイする場合の主要ステップは次のとおりです。
- モジュールを作成します。「パッケージ化JDBCモジュールの作成」を参照してください
- 適用可能なすべてのディスクリプタ・ファイル内のモジュールに参照を追加します。「Java EEディスクリプタ・ファイルでのJDBCモジュールの参照」を参照してください
- すべてのアプリケーション・モジュールをEARにパッケージ化します。「JDBCモジュールによるエンタープライズ・アプリケーションのパッケージ化」を参照してください
- アプリケーションをデプロイします。「JDBCモジュールによるエンタープライズ・アプリケーションのデプロイ」を参照してください
パッケージ化JDBCモジュールの作成
次に、weblogic.Deployer
ユーティリティなどのJSR 88ベース・ツールまたは管理コンソールを使用して、JDBCモジュールをデプロイし、管理します。
ノート:
WebLogic Server管理コンソールを使用してJDBCデータ・ソースを作成し、その後で、アプリケーションで使用するためにモジュールをテンプレートとしてコピーできます。ネームスペースでのネーミング競合を避けるために、モジュールのname要素およびjndi-name
要素を変更してからアプリケーションでデプロイする必要があります。
それぞれのJDBCモジュールは、データ・ソースを表します。汎用またはActive GridLinkデータ・ソースを表すモジュールには、汎用またはAGLデータ・ソース用のすべての構成パラメータが含まれています。マルチ・データ・ソースを表すモジュールには、マルチ・データ・ソースで使用する汎用データ・ソース・モジュールのリストも含め、マルチ・データ・ソース用の構成パラメータが含まれています。
管理コンソールを使用したJDBCデータ・ソース・モジュールの作成
アプリケーション・モジュールとして再使用できるデータ・ソース・モジュールをWebLogic Server管理コンソールで作成するステップは次のとおりです。
親トピック: パッケージ化JDBCモジュールの作成
JDBCパッケージ化モジュールの要件
JDBCモジュールは次の基準を満たす必要があります。
-
jdbc-data-source.xsd
スキーマに準拠していること。このスキーマは、http://www.oracle.com/webfolder/technetwork/weblogic/jdbc-data-source/index.htmlで入手できます。 -
-jdbc.xml
で終わるファイル名を使用していること。 -
WebLogicドメイン内で一意の
name
要素が含まれていること。
データ・ソース・モジュールには、次のJDBCドライバ・パラメータも含まれている必要があります。
-
url
-
driver-name
-
properties
(ユーザー名やパスワードのように、データベース接続の作成にJDBCドライバが必要とするすべてのプロパティを含む)。
マルチ・データ・ソース・モジュールには、data-source-list
も含まれている必要があります。これは、マルチ・データ・ソースがアプリケーションからのデータベース接続リクエストを満たすために使用するデータ・ソース・モジュールのカンマ区切りリストです。
ノート:
data-source-list
にリストされたデータ・ソースはすべて、XAおよびトランザクション・プロトコルの設定が同じである必要があります。
その他のすべての構成パラメータはオプションであるか、値が指定されない場合に使用されるデフォルト値が設定されています。ただし、実用的なJDBCモジュールを作成するには、アプリケーションと環境で必要とされる追加の構成オプションを指定する必要が生じる場合もあります。
親トピック: パッケージ化JDBCモジュールの作成
JDBCアプリケーション・モジュールの制限
JDBCアプリケーション・モジュールには次の制限があることに注意してください。
-
LoggingLastResourceのglobal-transactions-protocolは、JDBCアプリケーション・モジュールでは使用できません。
-
アプリケーション・スコープのJDBCリソースが使われる本番環境でアプリケーションをデプロイする際、リソースがglobal-transactions-protocolに対してEmulateTwoPhaseCommitを使用している場合は、アプリケーションの複数バージョンを同時にデプロイできません。
親トピック: パッケージ化JDBCモジュールの作成
汎用データ・ソース・モジュールの作成
JDBCデータ・ソース・モジュール内の主要セクションは、次のとおりです。
-
jdbc-driver-params
- データベース接続の作成に使用されるJDBCドライバのエントリが含まれています。これにはurl
、driver-name
、および個別ドライバのproperty
エントリが含まれます。その他の有効エントリについては、jdbc-data-source.xsd
スキーマを参照してください。各要素の説明は、Oracle WebLogic Server MBeanリファレンスのJDBCDriverParamsBeanを参照してください。 -
jdbc-connection-pool-params
- 接続プールの構成のエントリが含まれています。接続テスト・オプション、文キャッシュ・オプションなどがあります。この要素は、weblogic-javaee.xsd
スキーマからconnection-pool-params
を継承します。これには、initial-capacity
、min-capacity
、max-capacity
、およびプールされたリソースに共通のその他のオプションも含まれます。詳細は、次を参照してください。-
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
- XAデータベース接続処理オプションに関するエントリ(keep-xa-conn-till-tx-complete
、xa-transaction-timeout
など)が含まれます。各要素の説明は、Oracle WebLogic Server MBeanリファレンスのJDBCXAParamsBeanを参照してください。
例A-1に、代表的な構成オプションを使用するデータ・ソースのJDBCモジュールの例を示します。
例A-1 汎用データ・ソース・モジュールのサンプル
<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モジュールの作成
Active GridLinkデータ・ソース・モジュールの作成
Active GridLinkデータ・ソース・モジュールは、汎用データ・ソース・システム・モジュールに類似しています。Active GridLinkデータ・ソースには、ONS
およびFAN
を含むjdbc-oracle-params
セクションが含まれます。
親トピック: パッケージ化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モジュールでのデータベース・パスワードの暗号化
JDBCモジュール内でデータベース・パスワードを暗号化して、データ・ソースを保持することをお薦めします。データベース・パスワードを暗号化するには、WebLogic Serverのencrypt
ユーティリティを使用してパスワードを処理します。このユーティリティによって暗号化されたパスワードが返され、それをpassword-encrypted
要素としてJDBCモジュールに含めます。WebLogic Serverのencryptユーティリティの使用の詳細は、WebLogic Server WLSTコマンド・リファレンスのencryptを参照してください。
JDBCモジュールの新規ドメインへのデプロイ
JDBCモジュールをドメイン間で移動することは、アプリケーションを開発環境から本番環境に移動する場合などのように、一般的に使われる方法です。ただし、WebLogic Serverのencryptユーティリティにより生成された暗号化キーは、新しいドメインに転送できません。暗号化されたデータベース・パスワードを持つJDBCモジュールを移動する際、次のいずれかを実行する必要があります。
-
特に新規ドメイン用に暗号化されたパスワードが含まれるデプロイメント・プラン内の古い暗号化パスワードをオーバーライドします。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのデプロイメント・プランの更新を参照してください。
-
新規ドメイン用に、パスワードを再暗号化します。「JDBCモジュールでのデータベース・パスワードの暗号化」を参照してください
-
Oracleウォレットを使用している場合は、ウォレットを参照して、ウォレット・ファイルを新規ドメインにコピーするだけです。「Oracleウォレットの作成および管理」を参照してください
親トピック: 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モジュールに対するマルチ・データ・ソース内の汎用データ・ソースもすべて、アプリケーション・スコープに設定される必要があります。
親トピック: パッケージ化JDBCモジュールの作成
Java EEディスクリプタ・ファイルでのJDBCモジュールの参照
エンタープライズ・アプリケーションでJDBCモジュールをパッケージ化する際、適用可能なすべてのディスクリプタ・ファイル内で、特に次のファイル内でモジュールを参照する必要があります。
-
weblogic-application.xml
-
ejb-jar.xml
-
weblogic-ejb-jar.xml
-
web.xml
-
weblogic.xml
図A-1に、EJBアプリケーションに対する各種ディスクリプタ・ファイルのエントリ間の関係と、それらのエントリがアプリケーションでパッケージ化されたJDBCモジュールを参照する方法を示します。
weblogic-application.xml内のパッケージ化されたJDBCモジュール参照
エンタープライズ・アプリケーションにJDBCモジュールを含める際、各JDBCモジュールを、アプリケーションでパッケージ化されたweblogic-application.xml
ディスクリプタ・ファイル内のタイプ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など)で、各
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モジュールによるエンタープライズ・アプリケーションのパッケージ化
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();