![]() ![]() ![]() ![]() |
エンタープライズ アプリケーションをパッケージ化する際には、アーカイブに JDBC モジュールをパッケージ化し、適用可能なすべての記述子ファイルの JDBC モジュールへの参照を追加することにより、アプリケーション内に JDBC リソースを含めることができます。アプリケーションをデプロイする場合、JDBC リソースもデプロイされます。JDBC モジュールをどのようにコンフィグレーションするかに応じて、アプリケーションと共にデプロイされる JDBC データ ソースは、それが含まれるアプリケーションによる使用のみに制限 (アプリケーション スコープのモジュール) されるか、またはすべてのアプリケーションおよびクライアントで使用可能 (グローバル スコープのモジュール) となるかのいずれかです。
以下の節では、パッケージ化された JDBC モジュールの詳細について説明します。
JDBC モジュールとエンタープライズ アプリケーションの作成、パッケージ化、およびデプロイにおける主な手順は、以下のとおりです。
JDBC アプリケーション モジュールの作成には、XML 記述子ファイルの作成をサポートする任意の開発ツールを使用できます。その後、JDBC モジュールをデプロイおよび管理するには、weblogic.Deployer
ユーティリティ、Administration Console など、JSR 88 ベースのツールを使用します。
注意 : | Administration Console を使用して JDBC データ ソースを作成した後、アプリケーションで使用するテンプレートとしてモジュールをコピーすることができます。ネームスペース内での名前の衝突を避けるため、モジュールをアプリケーションと一緒にデプロイする前に、モジュールの name 要素と jndi-name 要素を変更する必要があります。 |
各 JDBC モジュールは、データ ソースまたはマルチ データ ソースを表します。データ ソースを表すモジュールには、そのデータ ソースのコンフィグレーション パラメータがすべて含まれています。マルチ データ ソースを表すモジュールには、そのマルチ データ ソースが使用するデータ ソース モジュールのリストなどの、マルチ データ ソースのコンフィグレーション パラメータが含まれています。
Administration Console で、アプリケーション モジュールとして再利用できるデータ ソース モジュールを作成するには、以下の手順に従います。
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 モジュールのアプリケーション スコープ指定」を参照してください。
JDBC モジュールは、以下の条件を満たしている必要があります。
weblogic-jdbc.xsd
スキーマに準拠していること。このスキーマは http://www.bea.com/ns/weblogic/920/weblogic-jdbc.xsd にあります。-jdbc.xml
で終わるファイル名を使用していること。name
要素が含まれていること。
データ ソースはまた、以下の JDBC ドライバ パラメータを備えている必要があります。
マルチ データ ソース モジュールはまた、以下のデータ ソース パラメータを備えている必要があります。
注意 : | data-source-list にリストされているデータ ソースはすべて、XA およびトランザクション プロトコル設定が同じである必要があります。 |
その他のコンフィグレーション パラメータはすべて、任意指定であるか、または値が指定されていなければ、WebLogic Server が使用するデフォルト値となります。ただし、有用な JDBC モジュールを作成するには、アプリケーションおよび環境に必要な追加のコンフィグレーション オプションを指定しなければならない場合があります。
JDBC アプリケーション モジュールについては、以下の制限事項に留意してください。
JDBC データ ソース モジュール内の主要なセクションは、以下のとおりです。
jdbc-driver-params
- url
、driver-name
、および個々のドライバ property
エントリなど、データベース接続の作成に使用される JDBC ドライバ用のエントリを含む。さらなる有効なエントリについては、weblogic-jdbc.xsd
スキーマを参照してください。各要素の詳細については、『WebLogic Server MBean Reference』の「JDBCDriverParamsBean」を参照してください。jdbc-connection-pool-params
- 接続テスト オプション、ステートメント キャッシュ オプションなど、接続プールのコンフィグレーション用のエントリを含む。この要素はまた、initial-capacity
、max-capacity
、およびプールされたリソースに共通のその他のオプションを含む、weblogic-j2ee.xsd
スキーマからの connection-pool-params
を継承しています。詳細については、以下を参照してください。weblogic-jdbc.xsd
スキーマjdbc-data-source-params
- jndi-name
、row-prefetch-size
、global-transactions-protocol
など、データ ソース動作オプションおよびトランザクション処理オプション用のエントリを含む。さらなる有効なエントリについては、weblogic-jdbc.xsd
スキーマを参照してください。各要素の詳細については、『WebLogic Server MBean Reference』の「JDBCDataSourceParamsBean」を参照してください。jdbc-xa-params
- keep-xa-conn-till-tx-complete
、xa-transaction-timeout
など、XA データベース接続処理オプション用のエントリを含む。各要素の詳細については、『WebLogic Server MBean Reference』の「JDBCXAParamsBean」を参照してください。
コード リスト A-1 に、データ ソースの JDBC モジュールの例を、いくつかの一般的なコンフィグレーション オプションと共に示します。
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/91">
<name>examples-demoXA-2</name>
<jdbc-driver-params>
<url>jdbc:pointbase:server://localhost:9092/demo</url>
<driver-name>com.pointbase.xa.xaDataSource</driver-name>
<properties>
<property>
<name>user</name>
<value>examples</value>
</property>
<property>
<name>databaseName</name>
<value>jdbc:pointbase:server://localhost:9092/demo</value>
</property>
</properties>
<password-encrypted>eNEVN9dk4dEDUEVqL1</password-encrypted>
</jdbc-driver-params>
<jdbc-connection-pool-params>
<initial-capacity>3</initial-capacity>
<max-capacity>10</max-capacity>
<test-connections-on-reserve>true</test-connections-on-reserve>
<test-table-name>SQL SELECT COUNT(*) FROM SYSTABLES</test-table-name>
</jdbc-connection-pool-params>
<jdbc-data-source-params>
<global-transactions-protocol>TwoPhaseCommit</global-transactions-protocol>
<jndi-name>examples-demoXA-2</jndi-name>
<scope>Application</scope>
</jdbc-data-source-params>
</jdbc-data-source>
JDBC マルチ データ ソース モジュールは、データ ソース モジュールと比べると非常に単純です。必要とされるメイン セクションは jdbc-data-source-params
の 1 つのみです。マルチ データ ソース内の jdbc-data-source-params
要素は、データ ソースの動作オプションではなく、マルチ データ ソースの動作オプションを含むという点が異なります。jdbc-data-source-params
内の以下のパラメータだけがマルチ データ ソースでは有効です。
各要素の詳細については、『WebLogic Server MBean Reference』の「JDBCDataSourceParamsBean」を参照してください。
コード リスト A-2 に、データ ソースの JDBC モジュールの例を、いくつかの一般的なコンフィグレーション オプションと共に示します。
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/91">
<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 の encrypt
ユーティリティでパスワードを処理します。このユーティリティから、そのパスワードを暗号化したものが返されます。これを、password-encrypted
要素として JDBC モジュールに含めます。WebLogic Server の暗号化ユーティリティの使い方の詳細については、『WebLogic Server コマンド リファレンス』の「Encrypt」を参照してください。
アプリケーションを開発からプロダクションに移行するなど、JDBC モジュールを、あるドメインから別のドメインに移動するのは、よく行われることです。しかし、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 モジュールをエンタープライズ アプリケーションとパッケージ化する場合、特に以下のものを含む、すべての適用可能な記述子ファイル内のモジュールを参照する必要があります。
図 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 モジュールを使用できるようにするには、アプリケーション モジュールとパッケージ化される記述子ファイルに、以下のエントリを追加する必要があります。
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");
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 モジュールを含むアプリケーションは、他のエンタープライズ アプリケーションと同じようにパッケージ化します。『WebLogic Server アプリケーションの開発』の「wlpackage を使用したアプリケーションのパッケージ化」を参照してください。
JDBC モジュールを含むアプリケーションは、他のエンタープライズ アプリケーションと同じようにデプロイします。『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();
![]() ![]() ![]() |