BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Server FAQ 集

 Previous Next Contents PDF で侮ヲ  

FAQ: WebLogic JDBC

Q. どのような場合に、DataSource ではなく TxDataSource を使うべきですか。

A. アプリケーションまたは環境が以下の基準に合致する場合には、DataSource ではなく TxDataSource を使うことをお勧めします。

EJB アーキテクチャでは、データベース作業を行う複数の EJB が単一のトランザクションの一部として呼び出されることは普通です。XA がない場合、これを行うための唯一の方法は、トランザクション参加者のすべてがまったく同一のデータベース接続を使用する場合です。WebLogic Server は、JTS ドライバと TxDataSource を使用して (XA 非対応ドライバを選択した場合はエミュレート 2 フェーズ コミットで) EJB から EJB へ JDBC 接続を明示的に渡す必要なしに、背後でこれを行います。XA を用いると (XA ドライバが必要となります)、複数のEJB がトランザクションの各部分用に別々のデータベース接続を利用できるようにするため、2 フェーズ コミットを用いた分散トランザクションに対して WebLogic Server 内の Tx Data Source を使用できます。XA の有無のいずれの場合でも、Tx Data Source を使うことをお勧めします。

Q. WebLogic Server 7.0 でデータソースに接続しようとしたときに「java.sql.SQLException: weblogic.common.ResourceException: Access not allowed」が送出されるのはなぜですか。

A. Administration Console で次の手順を行って、データソースの適切な ACL を作成する必要があります。

  1. [以前のセキュリティ|ACL]
    [新しい ACL の作成] :
    [名前] : weblogic.jdbc.connectionPool.yourPoolname
    [permission] : admin
    [グループ] : Administrators

  2. [Compatibility] の [更新] ボタン

  3. [サービス|JDBC|接続プール]
    [新しい接続プールの作成] :
    [ACL 名] : weblogic.jdbc.connectionPool.yourPoolname
    [対象] タブでサーバを選択し、[適用] ボタンをクリックします。

  4. [サービス|JDBC|データソース]
    この接続プールを使用して、新しいデータソースを正常に作成できます。

Q. JDBC 接続プールに対するデータベース接続のリクエストを、接続が使用可能になるまで待機させることはできますか。

A. いいえ。リクエストがプール接続を待機できるようにする方法はなく、システム的な観点からもそうするべきではありません。 サーバ内には固定数の実行スレッドがあり、接続を待機する各リクエストが実行スレッドのうちの 1 つに関連付けられることになります。しかし、実行スレッドには別のサーバ タスクを実行する役目もあるので、 待機するリクエストが多すぎると、実行スレッドのすべてがそれらのリクエストに関連付けられてサーバがフリーズする場合があります。

Q. プールからデータベース接続を取得するリクエストを、現在利用できる接続数以上に送信する場合、どのようにすれば ResourceExceptions を回避できますか。

A. この場合、作業による負荷に対してリソース (接続プール内のデータベース接続) が少なすぎることが根本的な問題といえるでしょう。 このような状況での適切な対処としては、接続プール内の接続の最大数を増加することをお勧めします。 最適な設計のもとに構築されたアプリケーションであれば、サーバが保持するプール接続数は実行スレッドごとに 1 つで十分です。

リソース例外に対しては、サーバ上の実行スレッドを拘束するような短い間隔のループ処理でリクエストを再試行しないようにするのが、アプリケーションの適切な応答方法です。

アプリケーションは、利用可能な接続がない場合にも正常に終了するように設計する必要があります。 NoResource 例外が多数発生しないように、接続はアプリケーション コードのできるだけ後の方で取得し、できるだけ早くプールに返すようにしてください。 接続はメソッド レベルの変数として保持し、次の例のように finally ブロックで返すようにしたほうがよいでしょう。

try {
...
} catch(Exception handleEx) {
...
} finally {
try{ conn.close();
}catch (Exception ignore){} // 常に接続をプールに返す
}

Q. マルチプールはどのように使用するのですか。

A. マルチプールは、データベース接続が失敗した場合の高可用性の目的またはマルチプールをロード バランシングする目的で使用できます。どちらかの方法しか選択できないので、マルチプールの主な目的を決める必要があります。詳細については、『WebLogic JDBC プログラマーズ ガイド』の「WebLogic JDBC 機能のコンフィグレーションと管理」で「マルチプールのコンフィグレーションと使い方」を参照してください。

Q. データベースが利用可能かどうかは、どのように確認できますか。

A. 基本的には、接続を試してみる以外にデータベースがダウンしているかどうかを確認する方法はありません。

また、データベースは接続を行ったり、その接続を使用した後に使用できなくなることがあります。コードは、予期しないエラーを処理できるように記述することをお勧めします。エラーは、データベースがダウンしたときにクライアントが何をしているかによってさまざまなかたちで発生します。

WebLogic Server は、WebLogic Server と DBMS との間の JDBC ドライバを用いた接続をテストするためのユーティリティ dbping を提供しています。『管理者ガイド』の「WebLogic Java ユーティリティの使い方」の章の「dbping」を参照してください。

Q. WebLogic JDriver for Microsoft SQL Server は、NT/WIN2K の信頼性のある接続を使用してデータベース サーバに接続できますか。

A. できません。WebLogic JDriver for Microsoft SQL Server は、信頼性のある接続をサポートしていません。 WebLogic JDriver for Microsoft SQL Server は非推奨であり、WebLogic Server 8.1 から廃止になります。

Q. WebLogic Server に同梱されている PointBase DBMS を開発またはプロダクション環境用に使用できますか。

PointBase サーバは WebLogic Server 配布キットに含まれる all-Java の DBMS 製品です。カスタムの試用版アプリケーションまたは WebLogic Server で提供されるパッケージ化されたサンプル アプリケーションを使用した WebLogic Server の評価のみをサポートしています。 PointBase Server を評価目的以外の開発やプロダクション環境で使用する場合は、個別のライセンスを PointBase から直接入手する必要があります。

 

Back to Top Previous Next