• 検索結果がありません。

jdbc.book

N/A
N/A
Protected

Academic year: 2021

シェア "jdbc.book"

Copied!
190
0
0

読み込み中.... (全文を見る)

全文

(1)

BEA

WebLogic

Server

and

WebLogic

Express

®

WebLogic JDBC

プロ

グラマーズ

ガイド

(2)

Copyright © 2002, 2003 BEA Systems, Inc. All Rights Reserved.

限定的権利条項

本ソフトウェアおよびマニュアルは、BEA Systems, Inc. 又は日本ビー・イー・エー・システムズ 株式会社 ( 以下、「BEA」といいます ) の使用許諾契約に基づいて提供され、その内容に同意する 場合にのみ使用することができ、同契約の条項通りにのみ使用またはコピーすることができます。 同契約で明示的に許可されている以外の方法で同ソフトウェアをコピーすることは法律に違反し ます。このマニュアルの一部または全部を、BEA からの書面による事前の同意なしに、複写、複 製、翻訳、あるいはいかなる電子媒体または機械可読形式への変換も行うことはできません。 米国政府による使用、複製もしくは開示は、BEA の使用許諾契約、および FAR 52.227-19 の 「Commercial Computer Software-Restricted Rights」条項のサブパラグラフ (c)(1)、DFARS

252.227-7013 の「Rights in Technical Data and Computer Software」条項のサブパラグラフ (c)(1)(ii) 、NASA FAR 補遺 16-52.227-86 の「Commercial Computer Software--Licensing」条項の サブパラグラフ (d)、もしくはそれらと同等の条項で定める制限の対象となります。 このマニュアルに記載されている内容は予告なく変更されることがあり、また BEA による責務を 意味するものではありません。本ソフトウェアおよびマニュアルは「現状のまま」提供され、商 品性や特定用途への適合性を始めとする ( ただし、これらには限定されない ) いかなる種類の保 証も与えません。さらに、BEA は、正当性、正確さ、信頼性などについて、本ソフトウェアまた はマニュアルの使用もしくは使用結果に関していかなる確約、保証、あるいは表明も行いません。

商標または登録商標

BEA、Jolt、Tuxedo、および WebLogic は BEA Systems, Inc. の登録商標です。BEA Builder、BEA Campaign Manager for WebLogic、BEA eLink、BEA Manager、BEA WebLogic Commerce Server、 BEA WebLogic Enterprise、BEA WebLogic Enterprise Platform、BEA WebLogic Express、BEA WebLogic Integration、BEA WebLogic Personalization Server、BEA WebLogic Platform、BEA WebLogic Portal、BEA WebLogic Server、BEA WebLogic Workshop および How Business Becomes E-Business は、BEA Systems, Inc. の商標です。

その他の商標はすべて、関係各社がその権利を有します。 WebLogic JDBC プログラマーズ ガイド

パート番号 マニュアルの日付 ソフトウェアのバージョン

(3)

目次

このマニュアルの内容

対象読者...xii

e-docs Web サイト ...xii

このマニュアルの印刷方法 ... xii 関連情報...xiii サポート情報 ...xiii 表記規則...xiv

1.

WebLogic JDBC

の概要

JDBC の概要...1-1 JDBC ドライバと WebLogic Server の使用 ...1-2 JDBC ドライバのタイプ ...1-2 WebLogic Server JDBC ドライバの表...1-3 WebLogic Server 2 層 JDBC ドライバ...1-4 WebLogic jDriver for Oracle...1-4 WebLogic jDriver for Microsoft SQL Server... 1-4 WebLogic Server JDBC 多層ドライバ...1-5 WebLogic RMI ドライバ...1-5 WebLogic Pool ドライバ...1-6 WebLogic JTS ドライバ ...1-6 サードパーティ ドライバ...1-6 Sybase jConnect ドライバ ...1-7 Oracle Thin ドライバ ...1-7 接続プールの概要 ...1-7 サーバサイド アプリケーションでの接続プールの使い方 ...1-9 クライアントサイド アプリケーションでの接続プールの使い方...1-10 マルチプールの概要...1-10 クラスタ化された JDBC の概要 ...1-11 DataSource の概要...1-11 JDBC API... 1-12 JDBC 2.0 ...1-12

(4)

2.

WebLogic JDBC

のコンフィグレーションと管理

接続プールのコンフィグレーションと使い方...2-2 接続プールを使用するメリット ...2-2 起動時の接続プールの作成 ...2-3 正しい接続数によるサーバのロックアップの回避...2-3 接続プールのコンフィグレーションにおけるデータベース パスワー ド...2-4 接続プールの制限事項 ...2-5 JDBC 接続プールの接続の更新に関する注意事項 ...2-6 JDBC接続プールのテスト機能の強化...2-6 データベース接続消失後の接続テストでの遅延を最小限に抑える.. 2-7 接続テスト失敗後の接続要求の遅延を最小限に抑える ...2-8 secondsToTrustAnIdlePoolConnection を使用して接続要求の遅延を 最小限に抑える...2-9 接続プールの動的作成 ...2-10 動的接続プールのサンプル コード...2-11 パッケージをインポートする ...2-12 管理 MBeanHome をルックアップする ...2-12 サーバ MBean を取得する ...2-12 接続プール MBean を作成する...2-12 接続プール プロパティを設定する ...2-12 対象を追加する...2-13 DataSource を作成する...2-13 動的接続プールと DataSource を削除する ...2-14 接続プールの管理 ...2-15 プールに関する情報の取得...2-15 接続プールの無効化 ...2-16 接続プールの縮小 ...2-16 接続プールの停止 ...2-17 プールのリセット ...2-17 weblogic.jdbc.common.JdbcServices と weblogic.jdbc.common.Pool クラス (非推奨 ) の使用 ...2-18 アプリケーション スコープの JDBC 接続プール...2-19

(5)

マルチプールのコンフィグレーションと使い方 ...2-20 マルチプールの機能 ...2-21 マルチプール アルゴリズムの選択 ...2-21 高可用性 ...2-21 ロード バランシング ...2-22 マルチプールのフェイルオーバの拡張...2-22 接続プールが失敗したときの接続要求の転送の改良...2-23 マルチプール内の失敗した接続プールが回復するときの自動的な再 有効化...2-23 マルチプールの使用されている接続プールのフェイルオーバの有効 化 ...2-24 コールバックによるマルチプールのフェイルオーバの制御 ...2-25 コールバックによるマルチプールのフェイルバックの制御 ...2-29 マルチプール フェイルオーバの制限事項と要件...2-31 フェイルオーバを有効にするための予約時の接続のテスト ...2-31 使用中の接続ではフェイルオーバは行われない ...2-31 DataSource のコンフィグレーションと使い方 ...2-32 DataSource オブジェクトにアクセスするパッケージのインポート....2-33 DataSource を使用したクライアント接続の取得 ...2-33 コード例 ...2-34 JDBC データ ソース ファクトリ...2-34

3.

JDBC

アプリケーションのパフォーマンス

チューニング

JDBC パフォーマンスの概要 ...3-1 WebLogic のパフォーマンス向上機能 ...3-1 接続プールによるパフォーマンスの向上 ...3-2 Prepared Statement とデータのキャッシング...3-2 ベスト パフォーマンスのためのアプリケーション設計 ...3-3 1. データをできるだけデータベースの内部で処理する...3-3 2. 組み込み DBMS セットベース処理を使用する...3-4 3. クエリを効率化する ...3-4 4. トランザクションを単一バッチにする...3-6 5. DBMS トランザクションがユーザ入力に依存しないようにする ...3-7 6. 同位置更新を使用する...3-8 7. 操作データをできるだけ小さくする...3-8

(6)

4.

WebLogic

多層

JDBC

ドライバの使い方

WebLogic RMI ドライバの使い方 ...4-1 WebLogic RMI ドライバを使用するための WebLogic Server の設定...4-2 RMI ドライバを使用するサンプル クライアント コード ...4-2 必要なパッケージをインポートする...4-3 データベース接続を取得する ...4-3 JNDI ルックアップを使用した接続の取得 ...4-3 WebLogic RMI ドライバだけを使用して接続を取得する...4-4 WebLogic RMI ドライバによる行キャッシング ...4-5 WebLogic RMI ドライバによる行キャッシングの重要な制限事項 .. 4-6 WebLogic JTS ドライバの使い方 ...4-7 JTS ドライバを使用するサンプル クライアント コード...4-8 WebLogic Pool ドライバの使い方 ...4-10

5.

WebLogic Server

でのサードパーティ

ドライバの使い方

サードパーティ JDBC ドライバの概要 ...5-1 サードパーティの JDBC ドライバに対する環境設定...5-4 Windows でのサードパーティ JDBC ドライバの CLASSPATH ...5-4 UNIX でのサードパーティ JDBC ドライバの CLASSPATH...5-5 Oracle Thin Driver の変更または更新...5-5 Oracle Thin Driver 9.x および 10g でのパッケージの変更 ...5-6 nls_charset12.zip による文字セットのサポート ...5-7 Sybase jConnect Driver の更新 ...5-7 IBM Infomix JDBC Driver のインストールと使い方 ...5-8 IBM Infomix JDBC Driver 使用時の接続プール属性...5-9 IBM Infomix JDBC Driver のプログラミング上の注意 ...5-11 Microsoft SQL Server 2000 Driver for JDBC のインストールと使い方...

5-11

Microsoft SQL Server Driver for JDBC の Windows システムへのイン ストール ...5-12 Microsoft SQL Server Driver for JDBC の UNIX システムへのインス

トール ...5-12 Microsoft SQL Server Driver for JDBC 使用時の接続プール属性 .5-13

(7)

サードパーティ ドライバを使用した接続の取得...5-14 サードパーティ ドライバでの接続プールの使い方...5-14 接続プールと DataSource の作成 ...5-14 JNDI を使用した接続の取得...5-15 接続プールからの物理的な接続の取得...5-16 物理的な接続を取得するサンプル コード...5-17 物理的な接続を使用する際の制限事項...5-19 Oracle 拡張機能と Oracle Thin Driver の使用 ...5-19 Oracle JDBC 拡張機能の使用時の制限 ...5-20 Oracle 拡張機能から JDBC インタフェースにアクセスするサンプル コー ド...5-21 Oracle 拡張機能へアクセスするパッケージをインポートする ....5-21 接続を確立する...5-22 デフォルトの行プリフェッチ値を取得する ...5-22 ARRAY によるプログラミング...5-23 ARRAY を取得する ...5-24 データベースで ARRAY を更新する...5-24 Oracle Array 拡張機能メソッドを使用する...5-25 STRUCT によるプログラミング ...5-25 STRUCT を取得する ...5-26 OracleStruct 拡張機能メソッドを使用する...5-27 STRUCT 属性を取得する ...5-27 STRUCT によってデータベース オブジェクトを更新する ...5-29 データベース オブジェクトを作成する...5-29 STRUCT 属性を自動バッファリングする...5-30 REF によるプログラミング ...5-30 REF を取得する ...5-31 OracleRef 拡張機能メソッドを使用する ...5-32 値を取得する...5-32 REF 値を更新する ...5-33 データベースで REF を作成する ...5-35 BLOB と CLOB によるプログラミング ...5-36 DBMS から BLOB ロケータを選択するクエリを実行する...5-36 WebLogic Server java.sql オブジェクトを宣言する...5-36 SQL 例外ブロックを開始する ...5-36

(8)

Oracle 拡張機能インタフェースとサポートされるメソッドの表 ...5-39

6.

dbKona (

非推奨

)

の使い方

dbKona の概要...6-1 多層コンフィグレーションでの dbKona...6-2 dbKona と JDBC ドライバの相互作用 ...6-2 dbKona と WebLogic Event の相互作用 ...6-3 dbKona アーキテクチャ ...6-3 dbKona API ...6-4 dbKona API リファレンス...6-4 dbKona オブジェクトとそれらのクラス...6-5 dbKona のデータ コンテナ オブジェクト...6-5 DataSet ...6-6 QueryDataSet ...6-6 TableDataSet...6-7 EventfulTableDataSet (非推奨 ) ...6-10 Record ...6-12 Value ...6-13 dbKona のデータ記述オブジェクト ...6-14 Schema ...6-14 Column...6-15 KeyDef ...6-15 SelectStmt ...6-16 dbKona のその他オブジェクト...6-17 例外...6-17 定数...6-17 エンティティの関係...6-18 継承関係 ...6-18 所有関係 ...6-18 dbKona の実装...6-19 dbKona を使用した DBMS へのアクセス...6-19 手順 1. パッケージのインポート ...6-19 手順 2. 接続確立用のプロパティの設定...6-20

(9)

手順 3. DBMS との接続の確立...6-20 クエリの準備、およびデータの検索と表示 ...6-21 手順 1. データ検索用のパラメータの設定...6-21 手順 2. クエリ結果用の DataSet の生成 ...6-22 手順 3. 結果の取り出し ...6-23 手順 4. TableDataSet の Schema の検査 ...6-24 手順 5. htmlKona を使用したデータの検査...6-24 手順 6. htmlKona を使用した結果の表示...6-25 手順 7. DataSet および接続のクローズ ...6-26 SelectStmt オブジェクトを使用したクエリの作成...6-28 手順 1. SelectStmt パラメータの設定 ...6-28 手順 2. QBE を使用したパラメータの修正 ...6-29 SQL 文を使用した DBMS データの変更 ...6-29 手順 1. SQL 文の記述 ...6-30 手順 1. SQL 文の記述 ...6-30 手順 2. 各 SQL 文の実行 ...6-30 手順 3. htmlKona を使用した結果の表示...6-31 KeyDef を使用した DBMS データの変更...6-34 手順 1. KeyDef とその属性の作成...6-34 手順 2. KeyDef を使用した TableDataSet の作成...6-35 手順 3. TableDataSet へのレコードの挿入...6-35 手順 4. TableDataSet でのレコードの更新...6-36 手順 5. TableDataSet からのレコードの削除...6-36 手順 6. TableDataSet の保存の詳細 ...6-37 保存前の Record 状態の確認...6-37 手順 7. 変更内容の検証 ...6-38 コードのまとめ...6-38 dbKona での JDBC PreparedStatement の使い方 ...6-40 dbKona でのストアド プロシージャの使い方...6-41 手順 1. ストアド プロシージャの作成 ...6-41 手順 2. パラメータの設定 ...6-42 手順 3. 結果の検査...6-42 画像およびオーディオ用バイト配列の使い方 ...6-42 手順 1. 画像データの検索と表示...6-43 手順 2. データベースへの画像の挿入 ...6-43

(10)

手順 2. dbKona からの Oracle サーバのシーケンスの作成と破棄 6-44 手順 3. Sequence の使い方 ...6-45 コードのまとめ...6-45

7.

JDBC

接続のテストとトラブルシューティング

JDBC 接続のモニタ ...7-1 コマンドラインからの DBMS 接続の有効性の検証 ...7-2 構文...7-2 引数...7-2 サンプル ...7-3 JDBC のトラブルシューティング...7-4 JDBC 接続 ...7-4 Windows ...7-4 UNIX...7-5 コードセットのサポート...7-5 UNIX での Oracle に関わる他の問題 ...7-5 UNIX でのスレッド関連の問題...7-6 JDBC オブジェクトを閉じる...7-7 JDBC オブジェクトの破棄...7-7 UNIX での共有ライブラリに関連する問題のトラブルシューティング ...7-8 WebLogic jDriver for Oracle ...7-8 Solaris...7-9 HP-UX...7-9 不適切なファイル パーミッションの設定...7-9 不適切な SHLIB_PATH ...7-10

(11)

このマニュ アルの内容

こ のマニ ュ アルでは、 WebLogic Server™ におけ る JDBC の使い方について説明 し ます。 こ のマニ ュ アルの構成は次の と お り です。  第 1 章 「WebLogic JDBC の概要」 では、 JDBC コ ンポーネン ト と JDBC API の概要について説明し ます。  第 2 章 「WebLogic JDBC のコ ン フ ィ グ レーシ ョ ン と 管理」 では、 WebLogic Server Java アプ リ ケーシ ョ ンでの JDBC の使い方について説明し ます。  第 3 章 「JDBC アプ リ ケーシ ョ ンのパフ ォーマン ス チューニング」 では、 JDBC アプ リ ケーシ ョ ンか ら最高のパフ ォーマン ス を得る方法について説明 し ます。

 第 4 章 「WebLogic 多層 JDBC ド ラ イバの使い方」 では、 WebLogic Server を使用する ための WebLogic RMI ド ラ イバおよび JDBC ク ラ イ アン ト の設定 方法について説明し ます。  第 5 章 「WebLogic Server でのサー ド パーテ ィ ド ラ イバの使い方」 では、 WebLogic Server でサー ド パーテ ィ 製 ド ラ イ バを設定および使用する方法に ついて説明し ます。  第 6 章 「dbKona ( 非推奨 ) の使い方」 では、 アプ リ ケーシ ョ ンで dbKone ク ラ ス を使用する方法について説明し ます。  第 7 章 「JDBC 接続のテ ス ト と ト ラ ブルシ ューテ ィ ング」 では、 WebLogic Server で JDBC を使用する際の ト ラ ブルシ ューテ ィ ン グの ヒ ン ト を紹介し ま す。

(12)

対象読者

こ のマニ ュ アルは、 Sun Microsystems, Inc. の Java 2 Platform, Enterprise Edition (J2EE) を使用し て e- コマース アプ リ ケーシ ョ ン を構築する アプ リ ケーシ ョ ン開 発者を対象 と し ています。 Web 技術、 オブジ ェ ク ト 指向プ ロ グ ラ ミ ング技術、 および Java プロ グ ラ ミ ング言語に読者が精通し てい る こ と を前提 と し て書かれ て ます。

e-docs Web

サイ ト

BEA 製品の ド キ ュ メ ン ト は、 BEA の Web サ イ ト で入手でき ます。 BEA のホー ム ページで [ 製品の ド キ ュ メ ン ト ] を ク リ ッ ク し ます。

このマニュ アルの印刷方法

Web ブ ラ ウザの [ フ ァ イ ル|印刷 ] オプシ ョ ン を使用する と 、 Web ブ ラ ウザか ら こ のマニ ュ アルを一度に 1 章ずつ印刷で き ます。

こ のマニ ュ アルの PDF 版は、 WebLogic Server の Web サ イ ト で入手でき ます。 PDF を Adobe Acrobat Reader で開 く と 、 マニ ュ アルの全体 ( ま たは一部分 ) を書 籍の形式で印刷でき ます。 PDF を表示する には、 WebLogic Server ド キ ュ メ ン ト のホーム ページ を開き、 [ ド キ ュ メ ン ト のダウ ン ロー ド ] を ク リ ッ ク し て、 印刷 する マニ ュ アルを選択し ます。

Adobe Acrobat Reader は Adobe の Web サ イ ト (http://www.adobe.co.jp) で無料で 入手でき ます。

(13)

関連情報

BEA の Web サ イ ト では、 WebLogic Server の全マニ ュ アルを提供し ています。 JDBC の詳細については、 Sun Microsystems Javasoft Web サ イ ト にあ る JDBCセ

ク シ ョ ン を参照し て く だ さ い。

サポー ト 情報

BEA の ド キ ュ メ ン ト に関する ユーザか ら のフ ィ ー ド バ ッ ク は弊社に と っ て非常 に重要です。 質問や意見などがあれば、 電子 メ ールで docsupport-jp@beasys.com ま でお送 り く だ さ い。 寄せら れた意見については、 WebLogic Server の ド キ ュ メ ン ト を作成および改訂する BEA の専門の担当者が直に目を通し ます。 電子 メ ールの メ ッ セージには、 ご使用の ソ フ ト ウ ェ アの名前 と バージ ョ ン、 およ び ド キ ュ メ ン ト の タ イ ト ル と 日付をお書き添え く だ さ い。 本バージ ョ ンの BEA WebLogic Server について不明な点があ る場合、 または BEA WebLogic Server の

イ ン ス ト ールおよび動作に問題があ る場合は、 BEA WebSupport (www.bea.com) を通じ て BEA カ ス タ マ サポー ト ま でお問い合わせ く だ さ い。 カ ス タ マ サポー ト への連絡方法については、 製品パ ッ ケージに同梱 さ れてい る カ ス タ マ サポー ト カー ド に も記載 さ れています。 カ ス タ マ サポー ト では以下の情報をお尋ねし ますので、 お問い合わせの際はあ ら か じ めご用意 く だ さ い。  お名前、 電子 メ ール ア ド レ ス、 電話番号、 フ ァ ク ス番号  会社の名前 と 住所  お使いの機種 と コー ド 番号  製品の名前 と バージ ョ ン  問題の状況 と 表示さ れ るエ ラー メ ッ セージの内容

(14)

表記規則

こ のマニ ュ アルでは、 全体を通し て以下の表記規則が使用さ れています。 表記法 適用 〔Ctrl〕 + 〔Tab〕 複数のキーを同時に押す こ と を示す。 斜体 強調ま たは書籍の タ イ ト ルを示す。 等幅テキスト コ ー ド サンプル、 コ マ ン ド と そのオプシ ョ ン、 デー タ構造体 と そ の メ ン バー、 データ 型、 デ ィ レ ク ト リ 、 お よびフ ァ イ ル名 と その 拡張子を示す。 等幅テキ ス ト はキーボー ド か ら 入力する テキ ス ト も 示す。 例 : import java.util.Enumeration; chmod u+w * config/examples/applications .java config.xml float 斜体の等幅テ キスト コ ー ド 内の変数を示す。 : String CustomerName; すべて大文 字のテキ ス ト デバ イ ス名、 環境変数、 およ び論理演算子を示す。 例 : LPT1 BEA_HOME OR { } 構文の中で複数の選択肢を示す。

(15)

[ ] 構文の中で任意指定の項目を示す。

例 :

java utils.MulticastTest -n name -a address [-p portnumber] [-t timeout] [-s send]

| 構文の中で相互に排他的な選択肢を区切 る。

例 :

java weblogic.deploy [list|deploy|undeploy|update]

password {application} {source}

... コ マンド ラ イ ンで以下のいずれかを示す。  引数を複数回繰 り 返す こ と がで き る 。  任意指定の引数が省略 さ れてい る。  パ ラ メ ー タや値な どの情報を追加入力で き る 。 . . . コー ド サンプルま たは構文で項目が省略 さ れてい る こ と を示す。 表記法 適用

(16)
(17)

1

WebLogic JDBC

の概要

以下の節では JDBC コ ンポーネン ト と JDBC API の概要について説明し ます。  1-1 ページの 「JDBC の概要」  1-2 ページの 「JDBC ド ラ イ バ と WebLogic Server の使用」  1-7 ページの 「接続プールの概要」  1-10 ページの 「マルチプールの概要」  1-11 ページの 「ク ラ ス タ化さ れた JDBC の概要」  1-11 ページの 「DataSource の概要」  1-12 ページの 「JDBC API」  1-12 ページの 「JDBC 2.0」  1-12 ページの 「プ ラ ッ ト フ ォーム」

JDBC

の概要

Java Database Connectivity (JDBC) と は、 Java プ ロ グ ラ ミ ン グ言語で作成 さ れた 一連の ク ラ ス と イ ン タ フ ェースで構成 さ れた標準 Java API の こ と です。 アプ リ ケーシ ョ ン、 ツール、 およびデータベースの開発者は、 JDBC を使用する こ と に よ り 、 データベース アプ リ ケーシ ョ ン を作成し た り 、 SQL 文を実行し た り で き ます。

JDBC は低レベル イン タ フ ェースであ り 、 SQL コ マン ド を直接起動する ( 呼び出 す ) ために使用さ れます。 ま た、 JDBC は Java Messaging Service (JMS) や Enterprise JavaBean (EJB) な どの高レベルの イ ン タ フ ェース と ツールを構築する ための基盤で も あ り ます。

(18)

JDBC

ド ラ イバと

WebLogic Server

の使用

JDBC ド ラ イ バは、 JDBC API の イン タ フ ェース と ク ラ ス を実装し ます。 以下の 節では、 WebLogic Server で使用でき る JDBC ド ラ イ バ オプシ ョ ンについて説明 し ます。

JDBC

ド ラ イバのタ イ プ

WebLogic Server は、 以下の タ イプの JDBC ド ラ イ バを使用し ます。 こ れ ら の ド ラ イバが互いに連携する こ と に よ っ て、 データベース ア ク セ スが提供 さ れます。  2 層 ド ラ イバ-接続プール と データベース間の直接的なデータベース ア ク セ ス を提供し ます。 WebLogic Server は、 DBMS ベンダ固有の JDBC ド ラ イ バ (WebLogic jDriver for Oracle、 および WebLogic jDriver for Microsoft SQL Server な ど ) を使用し てバ ッ ク エン ド データベースに接続し ます。

 多層 ド ラ イバ - ベンダに依存し ないデータベース ア ク セ ス を提供し ます。

Java ク ラ イ ア ン ト アプ リ ケーシ ョ ンは多層 ド ラ イバを使用し て、 WebLogic Server で コ ン フ ィ グ レーシ ョ ン さ れた任意のデータベースにア ク セス でき ま す。 BEA は、 RMI、 Pool、 および JTS と い う 3 種類の多層 ド ラ イバを提供

し てい ます。 WebLogic Server シ ス テ ムでは、 JNDI ル ッ ク ア ッ プを使用し て 接続プール と データ ソ ース を接続する と き に、 その背後で こ れ ら の ド ラ イ バ を使用し ます。 WebLogic Server の中間層アーキテ ク チャ ( データ ソ ース、 および接続プール ) に よ り 、 データベース リ ソ ース を集中管理でき ます。 ベンダに依存し ない多層 JDBC ド ラ イバを使用すれば、 購入し た コ ンポーネン ト を自社の DBMS 環境に よ り 簡単に適合さ せ、 よ り 移植性の高い コー ド を記述で き ます。

(19)

JDBC ド ラ イバ と WebLogic Server の使用

WebLogic Server JDBC

ド ラ イバの表

次の表に、 WebLogic Server で使用する ド ラ イバの一覧を示し ます。 表1-1 JDBC ド ラ イバ ド ラ イバ 層 ド ラ イバのタ イ プ と名前 データベース接続性 ドキュ メ ン ト ソース 2 層 分散 ト ラ ン ザ ク シ ョ ン のサポー ト な し (XA 非 対応) Type 2 (ネ イ テ ィ ブラ イ ブ ラ リ が必要)

 WebLogic jDriver for Oracle

 サー ド パーテ ィ ド ラ イ バ

Type 4 (pure Java)

 WebLogic jDriver for Microsoft SQL Server  以下の も のを含むサー ド パーテ ィ ド ラ イバ Oracle Thin Sybase jConnect ロ ーカル ト ラ ンザ ク シ ョ ンでの WebLogic Server と DBMS 間 『WebLogic JDBC プ ロ グ ラ マーズ ガ イ ド』 (こ のマニ ュ アル) 『管理者ガ イ ド 』 の 「JDBC 接 続の管理」

『WebLogic jDriver for Oracle のコ ン フ ィ グ レーシ ョ ン と 使 い方』

『WebLogic jDriver for Microsoft SQL Server の コ ン フ ィ グ レーシ ョ ン と 使い方』 2 層 分散 ト ラ ン ザ ク シ ョ ン のサポー ト 付 き (XA 非 対応) Type 2 (ネ イ テ ィ ブラ イ ブ ラ リ が必要)

 WebLogic jDriver for Oracle XA 分散 ト ラ ンザ ク シ ョ ン での WebLogic Server と DBMS 間 『WebLogic JTA プ ロ グ ラ マー ズ ガ イ ド』 『管理者ガ イ ド 』 の 「JDBC 接 続の管理」

『WebLogic jDriver for Oracle のコ ン フ ィ グ レーシ ョ ン と 使 い方』

(20)

WebLogic Server 2

JDBC

ド ラ イバ

以下の節では、 ベンダ固有の DBMS に接続する ために WebLogic Server で使用 さ れ る Type 2 および Type 4 の BEA 2 層 ド ラ イバについて説明し ます。

WebLogic jDriver for Oracle

BEA の WebLogic jDriver for Oracle WebLogic Server の配布キ ッ ト の中に入っ て います。 こ の ド ラ イバを使用する には、 Oracle ク ラ イ ア ン ト が イ ン ス ト ール さ れ てい る必要があ り ます。 WebLogic jDriver for Oracle XA ド ラ イバは、 WebLogic jDriver for Oracle を分散 ト ラ ンザ ク シ ョ ン用に拡張し ます。 詳細については、 『WebLogic jDriver for Oracle のコ ン フ ィ グ レーシ ョ ン と 使い方』 を参照し て く だ

さ い。

WebLogic jDriver for Microsoft SQL Server

WebLogic Server 配布キ ッ ト に同梱の BEA WebLogic jDriver for Microsoft SQL Server は、 Microsoft SQL Server への接続を提供する pure-Java、 Type 4 JDBC ド

ラ イバです。 詳細については、 『WebLogic jDriver for Microsoft SQL Server のコ ン フ ィ グ レーシ ョ ン と 使い方』 を参照し て く だ さ い。 多層 Type 3  WebLogic RMI ド ラ イ バ  WebLogic Pool ド ラ イ バ  WebLogic JTS (Type 3 以外) ク ラ イ ア ン ト と WebLogic Server (接続 プール) 間。RMI ド ラ イ バは非推奨の t3 ド ラ イ バの代わ り に使用 さ れ る 。JTS ド ラ イバは 分散 ト ラ ンザ ク シ ョ ン で使用 さ れ る 。Pool お よび JTS ド ラ イ バは サーバサ イ ド のみ。 『WebLogic JDBC プ ロ グ ラ マーズ ガ イ ド』 (こ のマニ ュ アル) 表1-1 JDBC ド ラ イバ ド ラ イバ 層 ド ラ イバのタ イプ と名前 デー タベース接続性 ド キュ メ ン ト ソース

(21)

JDBC ド ラ イバ と WebLogic Server の使用

WebLogic Server JDBC

多層 ド ラ イバ

以下の節では、 アプ リ ケーシ ョ ンへのデータベース ア ク セ ス を提供する WebLogic 多層 JDBC ド ラ イバについて簡単に説明し ます。 こ れ ら の ド ラ イバは、 サーバ サ イ ド のアプ リ ケーシ ョ ン ( および RMI ド ラ イ バの ク ラ イ アン ト アプ リ ケーシ ョ ン ) で使用でき ますが、 JNDI ツ リ ーか らデータ ソ ース をル ッ ク ア ッ プ し て、 接続プールか らデータベース接続を確立する こ と をお勧め し ます。 各 ド ラ イバの使用については、第 4 章 「WebLogic 多層 JDBC ド ラ イバの使い方」 を参照し て く だ さ い。

WebLogic RMI

ド ラ イバ

WebLogic RMI ド ラ イ バは WebLogic Server 内で動作する多層 Type 3 Java Database Connectivity (JDBC) ド ラ イ バです。 WebLogic RMI ド ラ イ バを使用し て、 データベース と 接続プールを接続する こ と も でき ますが、 こ れはお勧めでき る方法ではあ り ません。 BEA では、 JNDI ツ リ ーのデータ ソ ース をル ッ ク ア ッ プ し て、 接続プールか らデータベース接続を確立する こ と をお勧め し ます。 以降、 データ ソースでは内部的に RMI ド ラ イバを使用する よ う にな り ます。 いずれの 方法で も、 WebLogic RMI ド ラ イ バは WebLogic と WebLogic JTS の各 ド ラ イバ を内部的に使用し て、 接続プールを接続し ます。 ま た、 WebLogic Server ク ラ ス タ内でコ ン フ ィ グ レーシ ョ ン さ れている場合は、 ク ラ ス タ化 JDBC 用に使用で き ます。 こ れに よ り 、 JDBC ク ラ イ アン ト は WebLogic ク ラ ス タの ロー ド バラ ンシング機能 と フ ァ イルオーバ機能を活用でき ます。 WebLogic RMI は、 サーバ サ イ ド アプ リ ケーシ ョ ン、 ま たは ク ラ イアン ト アプ リ ケーシ ョ ン と 共に使用で き ます。

WebLogic ド ラ イバの使用については、4-1 ページの 「WebLogic RMI ド ラ イ バの 使い方」 を参照し て く だ さ い。

(22)

WebLogic Pool

ド ラ イバ

WebLogic Pool ド ラ イ バを使用する と 、 HTTP サーブレ ッ ト や EJB などのサーバ サ イ ド アプ リ ケーシ ョ ンか ら接続プールを利用で き ます。 WebLogic Pool ド ラ イ バは、 サーバ サ イ ド アプ リ ケーシ ョ ンで直接使用で き ますが、 JNDI のル ッ ク ア ッ プに よ り 、 接続プールか らデータベース接続を確立する こ と をお勧め し ま す。 WebLogic Server のデータ ソ ースでは、 WebLogic Pool ド ラ イバを内部的に 使用し て、 接続プールを接続し ます。

Pool ド ラ イバの使い方については、 『WebLogic HTTP サーブレ ッ ト プ ロ グ ラ マーズ ガ イ ド 』 の 「プ ロ グ ラ ミ ング タ ス ク」 の 「データベースへのア ク セ ス」 を参照し て く だ さ い。

WebLogic JTS

ド ラ イバ

WebLogic JTS は WebLogic Pool ド ラ イ バに似た多層 JDBC ド ラ イ バです。 ただ し、 1 つのデータベース イン ス タ ン ス を使用する複数のサーバ間での分散 ト ラ ン ザ ク シ ョ ンで使用 さ れます。 JTS ド ラ イ バは 2 フ ェーズ コ ミ ッ ト を回避する た め、 単一のデータベース イ ン ス タ ン ス を使用する場合に限 り WebLogic jDriver for Oracle XA ド ラ イバよ り 効率的に動作し ます。 こ の ド ラ イバは、 サーバ サ イ ド アプ リ ケーシ ョ ンでのみ使用し ます。 WebLogic JTS ド ラ イバの使用については、4-7 ページの 「WebLogic JTS ド ラ イ バの使い方」 を参照し て く だ さ い。

サー ド パーテ ィ

ド ラ イバ

WebLogic Server は、 以下の要件を満たすサー ド パーテ ィ JDBC ド ラ イ バ と 連携 し て動作し ます。  ス レ ッ ド セーフ  JDBC API をサポー ト し てい る ド ラ イバでは、 API の拡張 もサポー ト さ れま すが、 最低条件 と し て JDBC API がサポー ト さ れていなければな り ません。  JDBC で EJB ト ラ ンザ ク シ ョ ン呼び出し を実装する

(23)

接続 プールの概要

こ れ ら の ド ラ イ バは通常、 WebLogic Server を コ ン フ ィ グ レーシ ョ ン し て、 接続 プールに物理的なデータベース接続を作成する と きに使用し ます。

Sybase jConnect

ド ラ イバ

2 層 Sybase jConnect Type 4 ド ラ イ バは、 WebLogic Server 配布キ ッ ト に付属し て います。 こ の ド ラ イバは、 Sybase Web サ イト か ら最新版を入手し て、 使用し て

く だ さ い。 WebLogic Server での こ の ド ラ イバの使い方の詳細については、5-1 ページの 「WebLogic Server でのサー ド パーテ ィ ド ラ イバの使い方」 を参照し て

く だ さ い。

Oracle Thin

ド ラ イバ

WebLogic Server に付属する 2 層 Oracle Thin Type 4 ド ラ イ バは、 WebLogic Server か ら Oracle DBMS への接続を提供し ます。 Oracle Thin ド ラ イバは、 Oracle Web サ イ ト か ら最新版を入手し て、 使用し て く だ さ い。 WebLogic Server での こ の ド ラ イバの使い方の詳細については、5-1 ページの 「WebLogic Server でのサー ド パーテ ィ ド ラ イバの使い方」 を参照し て く だ さ い。

接続プールの概要

WebLogic Server では、 DBMS への接続にそのま ま利用で き る接続プールを コ ン フ ィ グ レーシ ョ ンでき ます。 ク ラ イアン ト 、 およびサーバ サ イ ド のアプ リ ケー シ ョ ンでは、 JNDI ツ リ ーにあ る DataSource を介し て接続プールか ら接続を利用 する こ と ( 推奨方法 ) も、 多層 WebLogic ド ラ イバを介し て接続を利用する こ と も でき ます。 接続が完了する と 、 アプ リ ケーシ ョ ンに よ り 、 接続プールに接続が 返さ れます。

(24)

1-1 接続プールアーキテク チャへの WebLogic Server の接続 接続プールが起動 さ れる と 、 指定 さ れた数の物理的なデータベース接続が作成 さ れます。 起動時に接続を確立し てお く こ と に よ り 、 接続プールでは個々のアプ リ ケーシ ョ ン ご と にデータベース接続を作成する ためのオーバーヘ ッ ド を解消で き ます。 接続プールを使っ て WebLogic Server か ら DBMS へ物理的に接続する には、2 層 JDBC ド ラ イ バが必要にな り ます。 2 層 ド ラ イ バには、 WebLogic jDrivers、 ま た は JDBC ド ラ イ バ (Sybase jConnect ド ラ イ バ、ま たは Oracle Thin ド ラ イ バ ) のい ずれかを使用でき ます。 次の表に、 接続プールを使用する場合の メ リ ッ ト を ま と めてい ます。

(25)

接続 プールの概要 こ の節は、 接続プールの概要です。 詳細については、2-2 ページの 「接続プール のコ ン フ ィ グ レーシ ョ ン と 使い方」 を参照し て く だ さ い。

サーバサイ ド

アプ リ ケーシ ョ ンでの接続プールの

使い方

サーバ サ イ ド アプ リ ケーシ ョ ンか らデータベースにア ク セスする場合は、 Java Naming and Directory Interface (JNDI) ツ リ ーの DataSource、 ま たは WebLogic Pool ド ラ イバのいずれかを使用し ます。 2 フ ェーズ コ ミ ッ ト ト ラ ンザ ク シ ョ ン の場合は、 JNDI ツ リ ーの TxDataSource を使用する か、 WebLogic Server JDBC/XA ド ラ イ バ (WebLogic jDriver for Oracle/XA) を使用し ます。 1 つのデー 表1-2 接続プールを使用する メ リ ッ ト 接続プールのメ リ ッ ト 実現される機能 時間の節約、 オーバーヘ ッ ド の削減 DBMS を使用する と 、 接続が確立 さ れてユーザが利接続は非常に低速であ る。 接続プール 用で き る よ う にな る 。 代わ り の手段は、 アプ リ ケーシ ョ ンが必要に応 じ て独自の JDBC 接 続を行 う こ と であ る 。DBMS は、 実行時に ユーザか ら の接続試行を処理する 場合 よ り 専 用接続を使 う 方が高速に動作する 。 DBMS ユーザの管理 シ ス テ ム上で複数の並列 DBMS 接続を管理で き る。 こ れは、DBMS 接続に ラ イ セ ン ス上の 制限があ る か、 ま たは リ ソ ース に不安があ る 場合に重要 と な る。 アプ リ ケーシ ョ ンは DBMS ユーザ名、 パス ワー ド 、 お よび DBMS の場所を認識する 必要 も 、 伝送す る必要 も ない。 DBMS 永続性オプシ ョ ン を 使用で き る DBMS 永続性オプシ ョ ン と EJB の よ う な API を使 う 場合、WebLogic Server が JDBC 接続を 管理する にはプールが必須 と な る 。 こ れに よ り 、EJB ト ラ ンザ ク シ ョ ンが正確かつ完全に コ ミ ッ ト ま たは ロ ールバ ッ ク さ れ る 。

(26)

タベース イン ス タ ン ス を使 う 複数のサーバ間での分散 ト ラ ンザ ク シ ョ ンの場合 は、 JNDI ツ リ ーの TxDataSource、 ま たは JTS ド ラ イ バを使用 し ます。

WebLogic 多層 ド ラ イバではな く 、 JNDI ツ リ ー、 および DataSource を使用し て、 接続プールにア ク セ スする こ と をお勧め し ます。

ク ラ イアン ト サイ ド

アプ リ ケーシ ョ ンでの接続

プールの使い方

BEA は、 ク ラ イアン ト サ イド の多層 JDBC 用に RMI ド ラ イ バを提供し ていま す。 RMI ド ラ イ バでは、 Java 2 Enterprise Edition (J2EE) 仕様を使っ て標準ベース のアプローチが利用でき ます。 新し いデプ ロ イメ ン ト の場合は、 RMI ド ラ イ バ の代わ り に、 JNDI ツ リ ーの DataSource を使用する こ と をお勧め し ます。 WebLogic RMI ド ラ イ バは Type 3、 多層 JDBC ド ラ イ バで、 RMI と DataSource オブジ ェ ク ト を使ってデータベース接続を作成し ます。 こ の ド ラ イ バは ク ラ ス タ 化 さ れた JDBC に も対応し、 WebLogic Server ク ラ ス タ の ロー ド バ ラ ンシ ングお よびフ ェ イルオーバ機能を活用し ます。 DataSource オブジ ェ ク ト を定義し て、 ト ラ ンザ ク シ ョ ン サポー ト を有効に し た り 無効に し た り で き ます。

マルチプールの概要

JDBC マルチプールは、 「接続プールのプール」 であ り 、 高可用性、 ま たはロー ド バラ ン ス アルゴ リ ズ ムのいずれかに従っ て設定で き ます。 マルチプールは、 接続プール と 同じ方法で使用で き ます。 アプ リ ケーシ ョ ンで接続が必要にな る場 合、 マルチプールでは選択さ れたアルゴ リ ズ ムに従って、 どの接続プールか ら接 続を提供する かを特定し ます。 マルチプールは、 複数サーバ コ ン フ ィ グ レー シ ョ ン または分散 ト ラ ンザ ク シ ョ ンではサポー ト さ れません。 WebLogic Server 構成で使用する マルチプールご と に、 次のいずれかのアルゴ リ ズ ム オプシ ョ ン を選択でき ます。  高可用性 - 接続プールは順序付け さ れた リ ス ト と し て設定さ れ、 順番に使用 さ れます。

(27)

ク ラ ス タ 化 さ れた JDBC の概要  ロー ド バ ラ ンシング - リ ス ト さ れたすべてのプールは ラ ウ ン ド ロ ビ ン方式で ア ク セ ス さ れます。 詳細については、2-20 ページの 「マルチプールの コ ン フ ィ グ レーシ ョ ン と 使い 方」 を参照し て く だ さ い。

ク ラ ス タ化された

JDBC

の概要

WebLogic Server を使用する と 、 データ ソ ース、 接続プール、 マルチプールな ど の JDBC オブジ ェ ク ト を ク ラ ス タ化し て、 ク ラ ス タ にホ ス ト さ れる アプ リ ケー シ ョ ンの可用性を高め る こ と がで き ます。 ク ラ ス タ用に コ ン フ ィ グ レーシ ョ ンす る各 JDBC オブジ ェ ク ト は、 ク ラ ス タ内の各管理対象サーバに存在する必要があ り ます。 JDBC オブジ ェ ク ト を コ ン フ ィ グ レーシ ョ ンする と きに、 それ ら を ク ラ ス タに割 り 当て ます。 ク ラ ス タ環境での JDBC オブジ ェ ク ト については、 『WebLogic Server ク ラ ス タ ユーザーズ ガ イ ド 』 の 「J DBC 接続」 を参照し て く だ さ い。

DataSource

の概要

ク ラ イ アン ト 、 およびサーバ サ イ ド の JDBC アプ リ ケーシ ョ ンでは、 DataSource を使用し て、 DBMS 接続を確立する こ と ができ ます。 DataSource は、 アプ リ ケーシ ョ ン と 接続プールの間の イン タ フ ェースです。 各データ ソ ース (DBMS イ ン ス タ ン ス な ど ) には、 独自の DataSource オブジ ェ ク ト が必要です。 DataSource オブジ ェ ク ト は、 分散 ト ラ ンザ ク シ ョ ンをサポー ト する DataSource ク ラ ス と し て実装でき ます。 詳細については、 2-32 ページの 「DataSource のコ ン フ ィ グ レーシ ョ ン と 使い方」 を参照し て く だ さ い。

(28)

JDBC API

JDBC アプ リ ケーシ ョ ン を作成する には、 java.sql API を使用し て、 データ ソ ー スへの接続の確立、 ク エ リ の送信、 データ ソースへの文の更新、 および結果の 処理に必要な ク ラ ス オブジ ェ ク ト を作成し ます。 各 JDBC イ ン タ フ ェースの詳 細については、java.sql Javadoc の標準 JDBC イ ン タ フ ェース を参照し て く だ さ い。 また次の WebLogic の Javadoc も参照し て く だ さ い。  weblogic.jdbc.pool  weblogic.management.configuration (データ ソ ース、 接続プール、 およ びマルチプールを作成する Mbean)

JDBC 2.0

WebLogic Server は、 JDBC 2.0 をサポー ト する JDK 1.3.1 を使用し ます。

プ ラ ッ ト フ ォーム

サポー ト さ れるプ ラ ッ ト フ ォームは、 ベンダ固有の DBMS と ド ラ イ バに よ っ て 異な り ます。 現時点での情報については、 「動作確認状況」 を参照し て く だ さ い。

(29)

2

WebLogic JDBC

のコ ン フ ィ グ

レーシ ョ ン と管理

WebLogic Server Administration Console を使用し て、 JDBC な どの WebLogic Server の機能を有効化し た り 、 コ ン フ ィ グ レーシ ョ ンやモニ タ を行っ た り で き ま す。 以下の節では、 JDBC 接続コ ンポーネン ト のプロ グ ラ ミ ング方法について説明し ます。  2-2 ページの 「接続プールの コ ン フ ィ グ レーシ ョ ン と 使い方」  2-19 ページの 「アプ リ ケーシ ョ ン ス コープの JDBC 接続プール」  2-20 ページの 「マルチプールのコ ン フ ィ グ レーシ ョ ン と 使い方」  2-32 ページの 「DataSource の コ ン フ ィ グ レーシ ョ ン と 使い方」 詳細については、 以下を参照し て く だ さ い。  『管理者ガ イド 』 の 「JDBC 接続の管理」。 Administration Console およびコ マ ン ド ラ イ ン イン タ フ ェース を使用し て、 接続を コ ン フ ィ グ レーシ ョ ンおよ び管理する方法について説明し ます。

 Administration Console オン ラ インヘルプ。 Administration Console を使用し

(30)

接続プールのコ ン フ ィ グレーシ ョ ン と使い

接続プール と は、 データベースへの同一の JDBC 接続の集ま り です。 データベー スへの接続は、 接続プールを登録する と 実行 さ れます。 こ の実行は、 WebLogic Server の起動時ま たは実行時に動的に行われます。 アプ リ ケーシ ョ ンはプールか ら接続を 「借 り 」、 使用後に接続を閉じ る こ と でプールに接続を返し ます。1-7 ページの 「接続プールの概要」 も参照し て く だ さ い。

接続プールを使用する メ リ ッ ト

接続プールには、 数多 く の性能およびアプ リ ケーシ ョ ン設計上の利点があ り ま す。  接続プールの使用は、 データベースへのア ク セ スが必要にな る たびに ク ラ イ ア ン ト 別に新し い接続を確立する よ り もは るかに効率的です。  アプ リ ケーシ ョ ンで DBMS パス ワー ド な どの詳細をハー ド コー ド 化する必 要があ り ません。  DBMS への接続数を制限で き ます。 DBMS への接続数に対する ラ イセン ス 制限を管理する場合に便利です。  アプ リ ケーシ ョ ンの コー ド を変更せずに、 使用中の DBMS を変更で き ます。 接続プールの コ ン フ ィ グ レーシ ョ ンの属性は Administration Console オン ラ イン ヘルプで定義 さ れます。 WebLogic Server の実行中に接続プールをプ ロ グ ラ ムで 作成する場合に使用でき る API も あ り ます。2-10 ページの 「接続プールの動的 作成」 を参照し て く だ さ い。 コマン ド ラ イ ン を使用する こ と も でき ます。 『管理 者ガ イド 』 の 「WebLogic Server コ マン ド ラ イ ン イ ン タ フ ェース リ フ ァ レ ン ス」 を参照し て く だ さ い。

(31)

接続プールの コ ン フ ィ グ レ ーシ ョ ン と 使い方

起動時の接続プールの作成

起動 ( 静的 ) 接続プールを作成するには、 Administration Console で属性 と パー ミ ッ シ ョ ン を定義し てか ら、 WebLogic Server を起動し ます。 WebLogic Server は、 起動処理中にデータベースに対する JDBC 接続を開き、 接続をプールに追加 し ます。 Administration Console で接続プールを設定する には、 左ペインに表示さ れ る ナ ビゲーシ ョ ン ツ リ ーでサービ ス と JDBC ノ ー ド を展開し、 接続プールを選択し ます。 右ペインには、 既存の接続プールの リ ス ト が表示さ れます。 [ 新し い JDBC Connection Pool の コ ン フ ィ グ レーシ ョ ン ] テキ ス ト リ ン ク を ク リ ッ ク し て、 接続プールを作成し ます。 手順説明、 および接続プール属性の説明については、Administration Console オ ン ラ イ ン ヘルプ (Administration Console の右上の疑問符を ク リ ッ ク し た と き に表 示さ れ る ) を参照し て く だ さ い。 詳細については、 『管理者ガ イド 』 の 「JDBC 接続の管理」 を参照し て く だ さ い。

正しい接続数によるサーバのロ ッ ク ア ッ プの回避

アプ リ ケーシ ョ ンで、 接続プールか ら接続を取得し よ う と し たが使用で き る接続 がない場合、 使用でき る接続がない と い う 旨の例外が送出 さ れます。 接続プール では、 接続要求のキ ューは作成 さ れません。 こ のエ ラーを避け るには、 接続プー ルのサ イ ズ を接続要求の最大負荷に対応で き るサ イズに拡大する よ う に し て く だ さ い。 Administration Console で接続プールの最大接続数を設定するには、 左ペインの ナビゲーシ ョ ン ツ リ ーを展開し て [ サービ ス| JDBC |接続プール ] ノ ー ド を表 示し、 接続プールを選択し ます。 次に右ペインで、 [ コ ン フ ィ グ レーシ ョ ン|接 続 ] タブを選択し て、 [ 最大容量 ] の値を指定し ます。

(32)

接続プールのコ ン フ ィ グレーシ ョ ンにおけるデータ ベース

スワー ド

接続プールを作成する場合、 一般にはデータベースへの接続用 と し て、 1 つ以上 のパス ワー ド を組み込みます。 オープン文字列を使用し て、 XA を有効にする場 合は、 パス ワー ド を 2 つ使用で き ます。 パス ワー ド は、 名前 と 値のペア と し て [ プ ロパテ ィ ] フ ィ ール ド に入力するか、 名前 と 値をそれぞれ対応する フ ィ ール ド に入力し ます。  [パスワー ド]。 こ のフ ィ ール ド を使用し て、 データベース パス ワー ド を設定 し ます。 物理的なデータベース接続を作成し た時点で、 2 層 JDBC ド ラ イ バ に送る [ プ ロパテ ィ ] で定義 さ れたパス ワー ド の値がすべてオーバーラ イド さ れます。 値は、config.xmlフ ァ イ ルで暗号化 (JDBCConnectionPoolタ グ

の Password属性 と し て保存 ) さ れ、 Administration Console では表示 さ れな

く な り ます。  [オープン文字列のパスワー ド ]。 こ のフ ィ ール ド を使用し て、 WebLogic Server の ト ラ ンザ ク シ ョ ン マネージ ャ がデータベース接続を開 く と き に使用 する オープン文字列内にパス ワー ド を設定し ます。 こ の値に よ っ て、 [ プ ロパ テ ィ ] フ ィ ール ド内のオープン文字列の一部 と し て定義さ れたすべてのパス ワー ド がオーバー ラ イド さ れます。 値は、config.xmlフ ァ イ ルで暗号化 (JDBCConnectionPoolタ グの XAPassword属性 と し て保存 ) さ れ、

Administration Console では表示 さ れな く な り ます。 実行時に、 WebLogic Server はこ のフ ィ ール ド で指定さ れたオープン文字列を再構築し ます。 [ プ ロ パテ ィ ] フ ィ ール ド のオープン文字列は、 次のフ ォーマ ッ ト にする必要があ り ます。 openString=Oracle_XA+Acc=P/userName/+SesTm=177+DB=demoPool+Thre ads=true=Sqlnet=dvi0+logDir= userNameの後、 パス ワー ド は表示 さ れな く な り ます。 接続プールを初めて コ ン フ ィ グ レーシ ョ ンする と き に [ プロパテ ィ ] フ ィ ール ド にパス ワー ド を指定し た場合、 次の起動時に WebLogic Server は、 パス ワー ド を Properties文字列か ら取 り 除き、 その値を暗号化し て Passwordの値 と し て設 定し ます。 接続プールの Password属性に値が指定さ れてい る場合、 WebLogic

Server は値を変更し ません。 ただ し 、Password属性の値は Properties文字列

(33)

接続プールの コ ン フ ィ グ レ ーシ ョ ン と 使い方 と し て定義するすべてのパス ワー ド に対し て同じ よ う に適用さ れます。 た と え ば、 接続プールを初めて コ ンフ ィ グ レーシ ョ ンする と きに次のプ ロパテ ィ を指定 し た と し ます。 user=scott; password=tiger; openString=Oracle_XA+Acc=p/scott/tiger+SesTm=177+db=jtaXaPool+Thr eads=true+Sqlnet=lcs817+logDir=.+dbgFl=0x15;server=lcs817 WebLogic Server を次に起動する と 、 データベース パス ワー ド は [ パス ワー ド ] 属性に、 オープン文字列内のパス ワー ド は [ オープン文字列のパス ワー ド ] 属性 に送 られ、 [ プロパテ ィ ] フ ィ ール ド には次の値が残 り ます。 user=scott; openString=Oracle_XA+Acc=p/scott/+SesTm=177+db=jtaXaPool+Threads= true+Sqlnet=lcs817+logDir=.+dbgFl=0x15;server=lcs817 [パス ワー ド ] ま たは [ オープン文字列のパス ワー ド ] 属性の値が確定し た ら、 こ れ ら の属性の値は [ プロパテ ィ ] フ ィ ール ド のそれぞれの値をオーバーラ イ ド し ます。 前述の例で説明する と 、tiger2をデータベース パス ワー ド と し て [ プ ロ パテ ィ ] 属性に指定し た場合、 WebLogic Server は こ の値を無視し、 暗号化さ れ た [ パス ワー ド ] 属性の現在の値であ る tigerをデータベース パス ワー ド と し て 使い続け ます。 データベース パス ワー ド を変更する には、 [ パス ワー ド ] 属性を 変更し なければな り ません。 注意: [パス ワー ド ] と [ オープン文字列のパス ワー ド ] の値は、 同じ でな く て もかまい ません。

接続プールの制限事項

接続プールを使用する場合、 データベース接続プ ロパテ ィ を変更する DBMS 固 有の SQL コー ド や、 WebLogic Server および JDBC ド ラ イ バでは認識 さ れない SQL コー ド を実行する こ と が可能です。 接続が接続プールに戻さ れた と きに、 接 続の特性が有効な状態に戻ら ない場合があ り ます。 た と えば、 Sybase DBMS で は、set rowcount 3 select * from y と い う 文を使用する と 、 接続か ら返 さ

れる行は最大で 3 行です。 こ の接続が接続プールに戻さ れて再利用 さ れる際、 選 択し てい る テーブルが 500 行だった と し て も、 ク ラ イアン ト に返 さ れる のは 3 行 のみ と な り ます。 ほ と んどの場合は、 同じ結果を実現でき、 WebLogic Server ま たは JDBC ド ラ イバによ って接続が リ セ ッ ト さ れる標準の (DBMS 固有でない ) SQL コー ド が用意さ れています。 こ の例であれば、set rowcountの代わ り に setMaxRows()を使用で き ます。

(34)

接続を変更する DBMS 固有の SQL コー ド を使用する場合は、 接続プールに戻す 前に接続を適切な状態に設定し なおす必要があ り ます。

JDBC

接続プールの接続の更新に関する注意事項

更新プロセスで置換できない不良なデータベース接続が見つかると、そのプロセ スは現在のサイクルを停止します。 残っている壊れた接続は、接続プールから削 除されません。 それらの接続は、新しい接続で置換できるまで接続プールに留ま ります。 この動作設計は、DBMS がアクセス不能な場合にシステムのサイクルを 利用してデータベース接続を更新することによるパフォーマンスの低下を防止す るためでした。 更新プロ セ スでは、 アプ リ ケーシ ョ ン コー ド で現在使用さ れてい る接続を テ ス ト ま たは更新する こ と はでき ません。 テ ス ト さ れ るのは、 現時点で予約さ れてい ない接続だけです。 し たがって、 た と え見つかっ た不良接続を置換でき る場合で あ って も、 アプ リ ケーシ ョ ンが接続を要求し ている場合には更新サ イク ルで接続 プールのすべての接続がテ ス ト さ れ る こ と はあ り ません。 更新プロ セ スでは使用さ れていない接続し かテ ス ト さ れないので、 一部の接続は ま った く テ ス ト さ れ る こ と がない、 と い う こ と も 考え られます。 testConnsOnReserveを有効に し ない限 り は、 ク ラ イアン ト は常に壊れた接続 を取得する リ ス ク を負います。 実際に、 た と えアプ リ ケーシ ョ ンに渡 さ れる前に 接続がテ ス ト を受けていて も、 その接続はテ ス ト の成功の直後に不良化する こ と があ り ます。

JDBC

接続プールのテス ト 機能の強化

WebLogic Server 7.0SP5 では、 プール さ れた接続に対するデータベース接続テ ス ト の機能を改良する ために、 JDBC 接続プールに以下の属性が追加 さ れま し た。  CountOfTestFailuresTillFlush—指定する回数のテ ス ト が失敗し た後で接 続プール内のすべての接続を閉じ、 それ以上データベース テ ス ト を行 う こ と で発生する遅延を最小限に抑え ます。 「データベース接続消失後の接続テ ス ト での遅延を最小限に抑え る」 を参照し て く だ さ い。  CountOfRefreshFailuresTillDisable—指定する回数のテ ス ト が失敗し た 後で接続プールを無効に し、 データベースの障害発生後に接続要求を処理す

(35)

接続プールの コ ン フ ィ グ レ ーシ ョ ン と 使い方 る際の遅延を最小限に抑え ます。 「接続テ ス ト 失敗後の接続要求の遅延を最 小限に抑え る」 を参照し て く だ さ い。

データ ベース接続消失後の接続テス ト での遅延を最小限に抑

える

DBMS への接続が一時的にで も 失われる と 、 接続プール内の一部または全部の JDBC 接続は停止し た状態にな り ます。 接続プールが予約時に接続を テ ス ト する よ う に コ ン フ ィ グ レーシ ョ ン さ れてい る場合 ( 推奨 )、 アプ リ ケーシ ョ ンがデー タベース接続を要求する と 、 WebLogic Server は接続を テ ス ト し ます。 接続が停 止し てい る こ と を検出する と 、 要求に応じ る ためにその接続を新し い接続で置き 換え ます。 通常、 DBMS がオン ラ インに復帰する と 更新処理が行われます。 ただ し、 特定の状況や失敗の状態に よ っ ては、 停止し た接続を テ ス ト する と 長い遅延 が発生する こ と があ り ます。 こ の遅延は、 接続プール内の停止し た接続ご と に発 生し、 すべての接続が置き換え られる まで続き ます。 停止し たデータベース接続のテ ス ト 中に発生する遅延を最小限に抑え る ために、 接続プールで CountOfTestFailuresTillFlush属性を設定でき ます。 こ の接続 を設定する場合、 WebLogic Server では、 テ ス ト が指定 さ れた回数続けて失敗す る と 、 接続プール内のすべての接続を停止し た状態 と 見な し て、 接続プール内の すべての接続を閉じ ます。 アプ リ ケーシ ョ ンが接続を要求し た と きに、 接続プールは停止し た接続のテ ス ト を最初に行わずに、 接続を作成する こ と がで き ます。 こ の動作に よ り 、 接続プー ルがフ ラ ッ シ ュ さ れた後は、 接続要求の遅延を最小限に抑え られます。 CountOfTestFailuresTillFlush属性は config.xmlフ ァ イ ルの JDBCConnectionPool エン ト リ 内に指定し ます。 TestConnectionsOnReserveも trueに設定する必要があ り ます。 次に例を示し ます。 <JDBCConnectionPool CapacityIncrement="1" DriverName="com.pointbase.xa.xaDataSource" InitialCapacity="2" MaxCapacity="10" Name="demoXAPool" Password="password" Properties="user=examples; DatabaseName=jdbc:pointbase:server://localhost/demo" Targets="examplesServer" TestConnectionsOnReserve="true" CountOfTestFailuresTillFlush="1" URL="jdbc:pointbase:server://localhost/demo" />

(36)

注意: CountOfTestFailuresTillFlush属性は、 Administration Console では 使用でき ません。 ネ ッ ト ワーク に小 さ な障害が発生し た り 、 フ ァ イ ア ウ ォールが唯一の ソ ケ ッ ト ま たは接続を停止する こ と が よ く あ る場合は、 テ ス ト の失敗数を 2 ま たは 3 に設定 する こ と がで き ます。 ただ し、 データベースの可用性の問題を解決し た場合は、 値を 1 に設定する と 最良のパフ ォーマン スが得られます。

接続テス ト 失敗後の接続要求の遅延を最小限に抑える

DBMS が使用不能にな る と 、 接続プールは接続要求に応じ よ う と し て、 永続的 にテ ス ト を行い、 停止し た接続を置き換え よ う と し ます。 接続プールはデータ ベースが使用可能にな る と すぐに反応で き る ため、 こ の動作は有益です。 ただ し、 停止し たデータベース接続のテ ス ト はネ ッ ト ワーク が タ イムア ウ ト する まで 行われる こ と があ り 、 その結果 ク ラ イ ア ン ト で遅延が発生し ます。 データベースが使用でき ない場合に ク ラ イアン ト アプ リ ケーシ ョ ンで発生する 遅延を最小限に抑え る ために、 接続プールで CountOfRefreshFailuresTillDisable属性を設定でき ます。 こ の属性を設定す る と 、 WebLogic Server は、 停止し た接続の置き換えに特定の回数続けて失敗し た後、 接続プールを無効に し ます。 アプ リ ケーシ ョ ンが無効な接続プールの接続 を要求し た場合、WebLogic Server は直ちに ConnectDisabledExceptionを送出

し て、 ク ラ イアン ト に接続が使用で き ない こ と を通知し ます。

こ の方法で無効になっ た接続プールに対し て、 WebLogic Server は定期的に更新 処理を実行し ます。 更新処理に よ って新し いデータベース接続が正常に作成 さ れ る と 、 WebLogic Server は接続プールを再び有効に し ます。 weblogic.Admin ENABLE_POOLコ マン ド を使用し て、 接続プールを手動で最有効化する こ と も で き ます。 CountOfRefreshFailuresTillDisable属性は config.xmlフ ァ イ ルの JDBCConnectionPool エン ト リ 内に指定し ます。 TestConnectionsOnReserveも trueに設定する必要があ り ます。 次に例を示し ます。 <JDBCConnectionPool CapacityIncrement="1" DriverName="com.pointbase.xa.xaDataSource" InitialCapacity="2" MaxCapacity="10" Name="demoXAPool" Password="password" Properties="user=examples; DatabaseName=jdbc:pointbase:server://localhost/demo" Targets="examplesServer"

(37)

接続プールの コ ン フ ィ グ レ ーシ ョ ン と 使い方

TestConnectionsOnReserve="true"

CountOfRefreshFailuresTillDisable="1"

URL="jdbc:pointbase:server://localhost/demo" />

注意: CountOfRefreshFailuresTillDisable属性は、 Administration Console

では使用で き ません。 ネ ッ ト ワー ク に小さ な障害が発生し た り 、 フ ァ イ ア ウ ォールが唯一の ソ ケ ッ ト ま たは接続を停止する こ と が よ く あ る場合は、 更新の失敗数を 2 ま たは 3 に設定す る こ と がで き ます。 ただ し、 値を 1 に設定する と 最良のパフ ォーマン ス が得ら れ ます。

secondsToTrustAnIdlePoolConnection

を使用し て接続要

求の遅延を最小限に抑える

大量の ト ラ フ ィ ッ ク 発生時にデータベース接続を テ ス ト する と 、 アプ リ ケーシ ョ ンのパフ ォーマン スが低下するおそれがあ り ます。 接続テ ス ト への影響を最小限 に抑え る ために、 JDBC 接続プールの コ ン フ ィ グ レーシ ョ ンで secondsToTrustAnIdlePoolConnection接続プロパテ ィ を設定し て、 最近使用 さ れた、 ま たはテ ス ト さ れたデータベース接続の有効性を信頼する こ と で、 接続 テ ス ト を省略で き ます。 使用する接続プールが、 予約時に接続をテ ス ト する よ う に コ ン フ ィ グ レーシ ョ ン さ れてい る場合 ( 推奨 )、 アプ リ ケーシ ョ ンがデータベース接続を要求する と 、 WebLogic Server ではそのデータベース接続をテ ス ト し てか ら アプ リ ケーシ ョ ン に渡し ます。 ただ し 、 接続がテ ス ト さ れたか正常に使用 さ れて接続プールに返 さ れた と きか ら、 secondsToTrustAnIdlePoolConnection で指定 さ れた時間が経過す る までの間に行われた要求については、 接続を アプ リ ケーシ ョ ンに渡す前の接続 テ ス ト が省略さ れます。 使用する接続プールが、 プール内で使用可能な接続を定期的にテ ス ト する よ う に コ ン フ ィ グ レーシ ョ ン さ れてい る場合 (RefreshMinutes を指定 )、 正常に使用さ れて接続プールに返 さ れた接続については、 secondsToTrustAnIdlePoolConnection で指定 さ れた時間内の接続テ ス ト が同様に 省略 さ れます。

secondsToTrustAnIdlePoolConnection を設定する には、 Administration Console の [JDBC 接続プール|コ ン フ ィ グ レーシ ョ ン|一般 ] タ ブにあ るプ ロパテ ィ の リ ス ト に secondsToTrustAnIdlePoolConnection を追加し ます。 Administration Console

(38)

オン ラ イン ヘルプの 「[JDBC 接続プール ] --> [ コ ン フ ィ グ レーシ ョ ン ] --> [ 一 般 ]」 を参照し て く だ さ い。 ま た、 こ のプロパテ ィ は config.xmlフ ァ イ ルで直 接設定する こ と も で き ます。 次に例を示し ます。 <JDBCConnectionPool CapacityIncrement="1" DriverName="com.pointbase.xa.xaDataSource" InitialCapacity="2" MaxCapacity="10" Name="demoXAPool" Password="password" Properties="user=examples; secondsToTrustAnIdlePoolConnection=15; DatabaseName=jdbc:pointbase:server://localhost/demo" Targets="examplesServer" TestConnectionsOnReserve="true" TestTableName="SYSTABLES" URL="jdbc:pointbase:server://localhost/demo" /> secondsToTrustAnIdlePoolConnection は、 ( 特に大量の ト ラ フ ィ ッ ク 発生時の ) データベース接続テ ス ト に よ る遅延を最小限に抑え る こ と によ り 、 アプ リ ケー シ ョ ンのパフ ォーマン ス を向上でき るチューニング機能です。 ただ し、 値を高 く 設定しすぎ る と 、 接続テ ス ト の有効性が低 く な る こ と があ り ます。 適切な値は、 使用する環境 と 接続の切断が発生し やすいかど う かに よ って決ま り ます。

接続プールの動的作成

JDBCConnectionPool管理 MBean は WebLogic Server 管理アーキテ ク チャ

(JMX) の一部 と し て提供 さ れます。 JDBCConnectionPool MBean を使用し て、

Java アプ リ ケーシ ョ ンの内部か ら、 接続プールを動的に作成、 およびコ ン フ ィ グ レーシ ョ ンでき ます。 すなわち、 ク ラ イアン ト 、 ま たはサーバ アプ リ ケー シ ョ ン コー ド を使用し て、 既に実行中の WebLogic Server で接続プールを作成で き ます。

WebLogic Server コ マン ド ラ イ ン イ ン タ フ ェースで CREATE_POOLコ マン ド を使

用し て も、 接続プールを動的に作成でき ます。 『管理者ガ イド 』 の 「CREATE_POOL」 を参照し て く だ さ い。

JDBCConnectionPool管理 MBean を使用し て接続プールを動的に作成するには、

次の手順に従います。

(39)

接続プールの コ ン フ ィ グ レ ーシ ョ ン と 使い方 2. JNDI ツ リ ーで、 管理 MBeanHome をル ッ ク ア ッ プ し ます。 3. サーバ MBean を取得し ます。 4. 接続プール MBean を作成し ます。 5. 接続プールのプ ロパテ ィ を設定し ます。 6. 対象を追加し ます。 7. DataSource オブジ ェ ク ト を作成し ます。 注意: 動的に作成し た接続プールでは必ず、 動的に作成し た DataSource オブ ジ ェ ク ト を使用し ます。 DataSource を終了するには、 こ れが特定の接続 プールに関連付け られてい る必要があ り ます。 ま た、 WebLogic Server 中 の DataSource オブジ ェ ク ト と 接続プールの間は、 1 対 1 の関係になっ て います。 し たがって、 接続プールに対応し て使用する DataSource の作成 が必要です。 JDBCConnectionPool MBean を使用し て接続プールを作成する と 、 サーバ コ ン フ ィ グ レーシ ョ ンに接続プールが追加 さ れ、 サーバを起動 / 停止し た後も、 引き 続き有効にな り ます。 接続プールを持続さ せる必要がない場合は、 プ ロ グ ラ ムで 削除し ます。 ま た、 動的に作成し た接続プールは一時的に無効にする こ と がで き ます。 無効に する と 、 プール中のどの接続で もデータベース サーバ と の通信がサスペン ド さ れます。 いったん無効に し たプールを再度有効にする と 、 各接続ではプールを無 効に し た時点 と 同じ状態が復元 さ れる ため、 ク ラ イ ア ン ト は中断 さ れた地点か ら データベースの操作を続行でき ます。

MBean を使用し て WebLogic Server を管理する方法については、 『WebLogic JMX Service プ ロ グ ラ マーズ ガ イ ド』 を参照し て く だ さ い。

JDBCConnectionPool MBean の詳細については、 WebLogic ク ラ スの Javadocを

参照し て く だ さ い。

動的接続プールのサンプル

コー ド

接続プールを動的に作成する と き の各手順を実行する コー ド サンプルを以下の 節で示し ます。

図 1-1    接続プール アーキテク チャへの  WebLogic Server  の接続 接続プールが起動 さ れる と 、 指定 さ れた数の物理的なデータベース接続が作成 さ れます。 起動時に接続を確立し てお く こ と に よ り 、 接続プールでは個々のアプ リ ケーシ ョ ン ご と にデータベース接続を作成する ためのオーバーヘ ッ ド を解消で き ます。 接続プールを使っ て WebLogic Server か ら DBMS へ物理的に接続する には、2 層  JDBC  ド ラ
表 3-1   返された完全な結果 名前 給与 Joe 10 Mikes 20 Sam 30 Tom 40 Jan 50 Ann 60 Sue 70 Hal 80
図 5-1   WebLogic Server  と共にイ ンス ト ールされる  JDBC  ド ラ イバのデ ィ レ ク
表 5-3  OracleConnection  イ ン タ フ ェース
+4

参照

関連したドキュメント

Windows Server 2012 Windows Server 2016 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 7 VMware vSphere 6 VMware vSphere 6.5 VMware vSphere 6.7 Oracle VM 3 UNIX サーバ.

The demographic and geographic factors affecting rural areas, such as their remoteness and dispersed settlement patterns, low population densities, and aging

Microsoft/Windows/SQL Server は、米国 Microsoft Corporation の、米国およびその

SUSE® Linux Enterprise Server 15 for AMD64 &amp; Intel64 15S SLES SUSE® Linux Enterprise Server 12 for AMD64 &amp; Intel64 12S. VMware vSphere® 7

Since the optimizing problem has a two-level hierarchical structure, this risk management algorithm is composed of two types of swarms that search in different levels,

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

WPA-personage, WPA-PSK (AES) WPA-enterprise, WPA-PSK (TKIP) WPA2-personage, WPA2-PSK (AES) WPA2-enterprise, WPA2-PSK

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence