ナビゲーションをスキップ.

Administration Console オンライン ヘルプ

  前 次 前/次ボタンと目次ボタンとの区切り線 目次

JDBC データ ソース

[JDBC データ ソースに関する属性と Administration Console 画面のリファレンス]

この節の内容は、以下のとおりです。

 


JDBC データ ソースのコンフィグレーション

データ ソースオブジェクトを使うと、JDBC アプリケーションで接続プールから DBMS 接続を取得できます。各データ ソース オブジェクトは、JNDI ツリーにバインドされ、接続プールまたはマルチプールを指します。アプリケーションでは、JNDI ツリー上でデータ ソースをルックアップし、その後そのデータ ソースからの接続を要求します。データ ソース オブジェクトは、グローバル トランザクションをサポートするように定義できます (JTA のサポートを有効化)。グローバル トランザクションのサポートは、アプリケーションで分散トランザクションを使用する場合に必要です。データ ソースおよびトランザクションが有効化されたデータ ソースの使い方の詳細は、「データ ソースでグローバル トランザクションを有効化すべき場合」を参照してください。

データ ソースでグローバル トランザクションを有効化すべき場合

使用しているアプリケーションまたは環境が、以下の条件の 1 つにでも当てはまる場合は、データ ソースでグローバル トランザクションを有効にする必要があります (コンフィグレーションの際に [グローバル トランザクションを受け付ける] を選択)。これにより、config.xml ファイルにトランザクション データ ソースが作成されます。

グローバル トランザクションを有効にしない場合 :

EJB アーキテクチャでは、データベース処理を行っている複数の EJB が単一のトランザクションの一部として呼び出されるのは、よくあることです。XA がない場合、これを行える唯一の方法は、すべてのトランザクション参加リソースでまったく同じデータベース接続を使用することです。WebLogic Server では、JTS ドライバとトランザクション データ ソースを使用して、これをバックグラウンドで行います。JDBC 接続を EJB 間で明示的に渡す必要はありません。

複数の EJB が 1 つのトランザクションに参加しており、かつ、データベース接続に XA JDBC ドライバを使用しない場合は、以下のオプションを使用してデータ ソースをコンフィグレーションします。

このようにコンフィグレーションすることによって、同じトランザクション内のすべてのデータベース作業で同じデータベース接続を内部的に使用することが JTS ドライバに強制されます。

XA を用いると (XA ドライバが必要となります)、複数の EJB がトランザクションの各部分用に別々のデータベース接続を利用できるようにするため、2 フェーズ コミットを用いた分散トランザクションに対して WebLogic Server 内のトランザクション データ ソースを使用できます。 XA の有無のいずれの場合でも、トランザクション データ ソース ([グローバル トランザクションを受け付ける] を選択したデータ ソース) を使うことをお勧めします。

注意: 同じ接続プールを指すトランザクション データ ソースを 2 つ作成しないでください。同じ接続プールを指す 2 つの異なるトランザクション データ ソースがトランザクションで使用されている場合、2 番目の接続を取得しようとすると XA_PROTO エラーが発生します。

データ ソースの詳細については、『WebLogic JDBC プログラマーズ ガイド』を参照してください。

注意: 以前のリリースでは、Administration Console でデータ ソースとトランザクション データ ソースは、異なるオブジェクトのタイプとして表示されていました。 このリリースでは、Administration Console でデータ ソースとトランザクション データ ソースは、[データ ソース] として表示されます。

2 フェーズ コミットのエミュレーション

JDBC 接続プールで分散トランザクションのサポートが必要なのに、DBMS で利用できる XA 対応のドライバがない場合は、データ ソースに対して [非 XA ドライバ用に 2 フェーズ コミットをエミュレート] オプションを選択できます。これにより、接続プールが参加しているトランザクションについて、データ ソースは 2 フェーズ コミットをエミュレートするようになります。このオプションは、[データ ソース|コンフィグレーション] タブの詳細オプションです。

[非 XA ドライバ用に 2 フェーズ コミットをエミュレート] が選択されている (EnableTwoPhaseCommittrue に設定されている) 場合、非 XA JDBC リソースは XAResource.prepare() メソッド呼び出し中に常に XA_OK を返します。リソースは、後続の XAResource.commit() または XAResource.rollback() の呼び出しに応答して、ローカル トランザクションをコミットまたはロールバックしようとします。リソースのコミットまたはロールバックが失敗した場合は、ヒューリスティックなエラーが発生します。ヒューリスティック エラーの結果、アプリケーション データは矛盾した状態のまま残される場合があります。

[非 XA ドライバ用に 2 フェーズ コミットをエミュレート] オプションが Console で選択されていない (EnableTwoPhaseCommitfalse に設定されている) 場合、非 XA JDBC リソースにより、XAResource.prepare() が失敗します。トランザクションに参加するリソースが 1 つだけの場合、1 フェーズの最適化が XAResource.prepare() をバイパスし、トランザクションはほとんどのインスタンスで正常にコミットされます。

詳細については、分散トランザクション用 非 XA JDBC ドライバのコンフィグレーションを参照してください。

注意: [非 XA ドライバ用に 2 フェーズ コミットをエミュレート] オプションを使用していると、データの整合性が損なわれるおそれがあります。このオプションよりも、XA 対応の JDBC ドライバを使用することをお勧めします。このオプションを有効にする前に、必ず以下のリスクを考慮してください。

この非 XA JDBC ドライバのサポートを「JTS ドライバ」と呼ぶこともあります。WebLogic Server では WebLogic JTS ドライバを使用してこの機能をサポートしているためです。JTS ドライバの詳細については、『WebLogic JDBC プログラマーズ ガイド』の「WebLogic JTS ドライバの使い方」を参照してください。

グローバル トランザクションで非 XA ドライバを使用する場合の制限とリスク

WebLogic Server では非 XA JDBC リソースのグローバル トランザクションへの参加をサポートしていますが、このリソースを使用するためにアプリケーションを設計する際に考慮すべき制限事項があります。非 XA ドライバは XA/2PC に従わず、1 フェーズのコミットおよびロールバック処理のみをサポートするため、WebLogic Server は (JTS ドライバを介して)、トランザクション マネージャによって制御されるトランザクションにリソースが参加できるように、譲歩する必要があります。

[非 XA ドライバ用に 2 フェーズ コミットをエミュレート] オプションを使用する前に、以下の制限およびリスクを考慮してください。

ヒューリスティックな終了とデータの矛盾

非 XA リソースで 2 フェーズ コミットのエミュレートを選択する場合 (enableTwoPhaseCommit = true)、非 XA リソースに対するトランザクションの準備フェーズは常に成功します。したがって、非 XA リソースは 2 フェーズ コミット (2PC) プロトコルに実際には参加していないため、失敗しやすくなります。準備フェーズ後に非 XA リソースでエラーが発生した場合、XA トランザクションの参加コンポーネントがトランザクションをコミットする一方で、非 XA リソースはトランザクションをロールバックする可能性があり、ヒューリスティックな終了とデータの矛盾を招きます。

データの整合性が失われるおそれがあるため、2 フェーズ コミットのエミュレートのオプションは、ヒューリスティックな状況に耐えられるアプリケーションでのみ使用してください。

保留中のトランザクションを回復できない

非 XA ドライバはローカル データベースのトランザクションのみを操作するため、外部トランザクション マネージャに関して、トランザクションがデータベース内で保留中の状態にあるという概念はありません。非 XA リソースの XAResource.recover() が呼び出されると、コミットまたはロールバックする必要のあるトランザクションが存在する場合でも、常に Xid (トランザクション ID) の空のセットが返されます。そのため、グローバル トランザクションで非 XA リソースを使用するアプリケーションは、システムの障害から回復してデータの整合性を維持することができません。

複数サーバ コンフィグレーションにおける非 XA リソースのパフォーマンス低下の可能性

WebLogic Server は特定の JDBC 接続に関連付けられたデータベース ローカル トランザクションに依存して、非 XA リソースのグローバル トランザクションへの参加をサポートしているため、同じ JDBC データ ソースが、複数の WebLogic Server インスタンス上にグローバル トランザクション コンテキストを持つアプリケーションからアクセスされる場合、JTS ドライバは常に、トランザクション内のアプリケーションによって確立される最初の接続に JDBC の処理をルーティングします。たとえば、あるサーバでアプリケーションがトランザクションを開始して非 XA JDBC リソースにアクセスし、別のサーバに RMI (Remote Method Invocation) 呼び出しを行って、同じ基底の JDBC ドライバを使用するデータ ソースにアクセスすると、JTS ドライバは、そのリソースには別のサーバ上のトランザクションに関連付けられた接続があることを認識して、RMI のリダイレクトを最初のサーバの実際の接続に設定します。接続に対するすべての操作は、最初のサーバで確立された 1 つの接続上で行われます。この動作では、リモート接続を設定して RMI 呼び出しを物理的な接続に対して行うことに関するオーバーヘッドが生じるため、パフォーマンスが低下する可能性があります。

非 XA 参加リソースは 1 つのみ

非 XA リソース (2 フェーズ コミットのエミュレートを選択) が WebLogic Server トランザクション マネージャに登録される場合は、XAResource インタフェースを実装するクラスの名前と共に登録されます。2 フェーズ コミットのエミュレートを選択したすべての非 XA リソースは XAResource インタフェースに対する JTS ドライバを使用するため、グローバル トランザクションに参加する (2 フェーズ コミットのエミュレートを選択した) すべての非 XA リソースは、同じ名前で登録されます。グローバル トランザクションで複数の非 XA リソースを使用する場合、名前の衝突やヒューリスティックな終了が起きる可能性があります。

JDBC データ ソースの作成とコンフィグレーション

  1. 左ペインで、[JDBC] ノードをクリックして展開します。
  2. [データ ソース] ノードをクリックします。ドメインで定義されているすべてのデータ ソースを示す [データ ソース] テーブルが右ペインに表示されます。
  3. [新しい JDBC データ ソースのコンフィグレーション] テキスト リンクをクリックします。右ペインに、JDBC データ ソース アシスタントが開きます。
  4. 以下の情報を入力します。
  5. [名前]—この JDBC データ ソースの名前を入力します。データ ソースを参照する際は、この名前が常にコンフィグレーション ファイル (config.xml) および Administration Console で使用されます。

    [JNDI 名]—この JDBC データ ソースのバインド先となる JNDI のパスを入力します。セミコロン (;) で区切って複数の名前を指定できます。

    [グローバル トランザクションを受け付ける]—このチェック ボックスをオン (デフォルト) にすると、このデータ ソースを使用するグローバル トランザクションが有効化されます。このチェック ボックスを選択解除すると、データ ソースを使用するグローバル トランザクションは無効になります (無視されます)。ほとんどの場合、このオプションは選択したままにしておきます。データ ソースでグローバル トランザクションを有効化すべき場合を参照してください。

    [非 XA ドライバ用に 2 フェーズ コミットをエミュレート]—このチェック ボックスをチェックすると、2 フェーズ コミットをエミュレートすることで、関連付けられた非 XA 接続プールからの接続をグローバル トランザクションで使用できるようになります。このオプションを選択する場合には注意が必要です。グローバル トランザクションで非 XA ドライバを使用する場合の制限とリスクを参照してください。

    [次へ] をクリックして次に進みます。

  6. データ ソースが指す接続プールを選択します。 アプリケーションは、JNDI ツリーでデータ ソースをルックアップして、データ ソースから接続を要求することにより、基底の接続プールから接続を取得します。ここで選択したプールは、アプリケーションがデータ ソースから接続を要求したときに、接続を提供するのに使用されます。
  7. [次へ] をクリックして次に進みます。

  8. 新しいデータ ソースを作成およびデプロイするサーバおよびクラスタを選択します。 データ ソースは、基底の接続プールがデプロイされている同じサーバまたはクラスタにデプロイする必要があります。デフォルトでは、JDBC データ ソース アシスタントによって、基底の接続プールがデプロイされているデプロイメント対象が選択されます。ほとんどの場合、デフォルトの選択内容を受け入れます。
  9. [作成] をクリックします。

複数の名前を持つデータ ソースのJNDI ツリーへのバインディング

WebLogic Server 8.1 SP3 以降のリリースでは、複数の名前を使って JNDI ツリーにバインドするようにデータ ソースをコンフィグレーションできます。 1 つの JDBC 接続プールを指す複数のデータ ソースをコンフィグレーションする代わりに、複数の名前を持つデータ ソースを使用できます。 BEA では、1 つの JDBC 接続プールを指す複数のデータ ソースのコンフィグレーションはサポートされていません。

既存のデータ ソースに JNDI 名を追加するには、[JNDI 名] 属性に名前をセミコロンで区切って追加します。 変更を行った後にシステムを再起動するか、または変更を行う前にデータ ソースをアンデプロイし、変更を行った後に再デプロイする必要があります。 次の手順に従います。

新しいデータ ソースに複数の JNDI 名を指定するには、JDBC データ ソースの作成とコンフィグレーションの手順に従います。

  1. 左ペインで、[JDBC] ノード、[データ ソース] ノードを順にクリックして展開します。
  2. 変更するデータ ソースをクリックします。 右ペインにダイアログが表示され、データ ソースの属性に関連するタブが示されます。
  3. [対象とデプロイ] タブをクリックして、データ ソースがデプロイされているサーバおよびクラスタのチェックボックスのチェックをはずします。
  4. [適用] をクリックして変更を保存します。
  5. [コンフィグレーション] タブをクリックします。 [JNDI 名] にデータ ソースの JNDI ツリーへのバインディングに使用する名前をセミコロン (;) で区切って入力します。 次に例を示します。
  6. name1;name2;name3
  7. [適用] をクリックして変更を保存します。
  8. [対象とデプロイ] タブをクリックして、データ ソースを再デプロイするサーバおよびクラスタを選択します。 データ ソースは、基底の接続プールがデプロイされている同じサーバまたはクラスタにデプロイする必要があります。
  9. [適用] をクリックして変更を保存します。

config.xml ファイル内のデータ ソースのコンフィグレーションは、次のように変更されます。

<JDBCTxDataSource 
JNDIName="name1;name2;name3"
Name="My Data Source"
PoolName="demoXAPool"
Targets="examplesServer"
/>

注意: 読みやすいように改行が入っています。

JDBC データ ソースのクローンの作成

  1. 左ペインで、[JDBC] ノードをクリックして展開します。
  2. [データ ソース] をクリックすると、ドメインでコンフィグレーションされているすべてのデータ ソースが表示されます。
  3. クローンを作成するデータ ソースを右クリックして、[(データ ソース名) のクローン] を選択します。右ペインにダイアログが表示され、データ ソースのクローンの作成に関連するタブが示されます。
  4. [名前] および [JNDI 名] 属性フィールドに値を入力します。必要に応じて、[コンフィグレーション] タブのその他の属性値を変更します。
  5. 注意: 新しいデータ ソースに対しては、新しい JNDI 名を指定する必要があります。新しいデータ ソースは、元のデータ ソースと同じ JNDI 名を使用できません。

    [コンフィグレーション] タブの属性の詳細については、「属性」を参照してください。

  6. [クローン] をクリックします。[コンフィグレーション] タブで指定した属性値とその他のタブの複製された属性値を備えた接続プールが作成されます。新しいデータ ソースが左ペインの [データ ソース] ノードの下に追加されます。
  7. データ ソースの残りのタブをクリックし、属性フィールドを変更するか、または現在の値をそのまま使用します。[適用] をクリックして、行った変更を保存します。

サーバまたはクラスタへの JDBC データ ソースのデプロイメント

  1. 左ペインで、[JDBC] ノード、[データ ソース] ノードを順にクリックして展開します。
  2. デプロイするデータ ソースをクリックします。 右ペインにダイアログが表示され、データ ソースの属性に関連するタブが示されます。
  3. [対象] タブをクリックして、新しいデータ ソースを作成およびデプロイするサーバおよびクラスタを選択します。データ ソースは、基底の接続プールがデプロイされている同じサーバまたはクラスタにデプロイする必要があります。
  4. [適用] をクリックして変更を保存します。

データ ソースへのメモの追加

  1. 左ペインで、[JDBC] ノードをクリックして展開します。
  2. [データ ソース] ノードをクリックして展開します。ドメインで定義されているデータ ソースのリストが表示されます。
  3. メモの追加先となるデータ ソースをクリックします。右ペインにダイアログが表示され、選択したオブジェクトの属性に関連するタブが示されます。
  4. [メモ] タブをクリックします。[メモ] フィールドにメモを入力します。
  5. [適用] をクリックして変更を保存します。

データ ソースの削除

  1. 左ペインで [JDBC] ノードをクリックし、[データ ソース] ノードをクリックして展開します。現在のドメインにあるデータ ソースのリストが表示されます。
  2. 削除するオブジェクトを右クリックして、[(オブジェクト名) の削除] を選択します。削除要求の確認を求めるダイアログが右ペインに表示されます。
  3. [はい] をクリックして、データ ソースを削除します。

 


JDBC データ ソース ファクトリ

アプリケーション スコープの JDBC 接続プールでは、JDBC データ ソース ファクトリに依存して、デフォルトの接続プールの値を提供します。アプリケーション スコープの接続プールを含むエンタープライズ アプリケーションをデプロイする前に、データ ソース ファクトリを作成する必要があります。アプリケーションの weblogic-application.xml 補足デプロイメント記述子は、Administration Console で指定したファクトリ名で、データ ソース ファクトリを参照する必要があります。

アプリケーション スコープの JDBC 接続プールの詳細については、アプリケーション スコープの JDBC データ ソースと JDBC 接続プールを参照してください。

リソース ファクトリの詳細については、『WebLogic エンタープライズ JavaBeans プログラマーズ ガイド』を参照してください。

JDBC データ ソース ファクトリの作成とコンフィグレーション

  1. 左ペインで、[サービス] ノードをクリックして [JDBC] を展開します。
  2. [データ ソース ファクトリ] を選択し、右ペインで [新しい JDBC データ ソース ファクトリのコンフィグレーション] テキスト リンクをクリックします。
  3. このデータ ソース ファクトリを参照するアプリケーション スコープの接続プールのデフォルト値として使用する値を、属性フィールドに入力します。
  4. [作成] をクリックして、JDBC データ ソース ファクトリを作成します。新しいデータ ソース ファクトリが左ペインの [データ ソース ファクトリ] ノードの下に追加されます。

 


アプリケーション スコープの JDBC データ ソース

アプリケーション スコープの JDBC データ ソースと JDBC 接続プールを参照してください。

 


データ ソースのモニタ

WebLogic Server には、データ ソースのモニタ オプションはありません。しかし、接続プールおよびトランザクションのモニタは行えます。詳細については、以下の節を参照してください。

JDBC 接続プールのモニタ

トランザクションのモニタ

 

Skip navigation bar  ページの先頭 前 次