Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理ガイド

- Previous: 第 2 章 アプリケーションの配備
- Next: 第 4 章 Java Message Service (JMS) リソースの設定

# 第 3 章 JDBC リソース

この章では、データベースにアクセスするアプリケーションで必要な、JDBC リソースの設定方法について説明します。この章には次の節が含まれています。

- 「JDBC リソースと接続プールについて」

- 「データベースアクセスの設定」

- 「JDBC 接続プールについて」

- 「JDBC リソースについて」

- 「持続マネージャーリソースについて」

# JDBC リソースと接続プールについて

- 「JDBC リソース」

- 「JDBC 接続プール」

- 「JDBC リソースと接続プールの協調動作について」

## JDBC リソース

データを格納、編成、取得するために、ほとんどのアプリケーションはリレーショナルデータベースを使用します。J2EE アプリケーションは、JDBC API を介してリレーショナルデータベースにアクセスします。

JDBC リソース (データソース) は、アプリケーションにデータベースへ接続する手段を提供します。通常、管理者は、ドメインに配備されたアプリケーションがアクセスする各データベースの JDBC リソースを作成します。ただし、データベース用に複数の JDBC リソースを作成できます。

JDBC リソースを作成するには、リソースを識別する一意の JNDI 名を指定します。「JNDI 名とリソース」の節を参照してください。通常、JDBC リソースの JNDI 名は `java:comp/env/jdbc` サブコンテキストにあります。たとえば、給与データベースの JNDI 名は `java:comp/env/jdbc/payrolldb` にある可能性があります。すべてのリソース JNDI 名は `java:comp/env` サブコンテキストにあるので、管理コンソールの JDBC リソースにある JNDI 名を指定するときは、`jdbc/`name だけを入力します。たとえば、給与データベースには `jdbc/payrolldb` を指定します。

## JDBC 接続プール

JDBC リソースを作成するには、関連した接続プールを指定します。複数の JDBC リソースで 1 つの接続プールを指定できます。

JDBC 接続プールとは、特定のデータベースのための再利用可能な接続のグループです。新しい物理接続をそれぞれ作成するには時間がかかるので、パフォーマンスの向上のためにサーバーは利用可能な接続のプールを保持しています。アプリケーションが接続を要求すると、プールから 1 つの接続が取得されます。アプリケーションが接続を閉じると、接続はプールに返されます。

接続プールのプロパティーは、データベースベンダーによっては異なる場合もあります。共通のプロパティーには、データベースの名前 (URL)、ユーザー名、およびパスワードがあります。

## JDBC リソースと接続プールの協調動作について

データを格納、編成、取得するために、ほとんどのアプリケーションはリレーショナルデータベースを使用します。J2EE アプリケーションは、JDBC API を介してリレーショナルデータベースにアクセスします。アプリケーションがデータベースにアクセスするには、接続を取得する必要があります。

実行時に、アプリケーションがデータベースに接続されると次のことが行われます。

1. JNDI API を介して呼び出しを行うことにより、アプリケーションはデータベースに関連した JDBC リソース (データソース) を取得します。

   リソースの JNDI 名を取得すると、ネーミングおよびディレクトリサービスが JDBC リソースを検索します。JDBC リソースはそれぞれ接続プールを指定します。

2. JDBC リソースを経由して、アプリケーションはデータベース接続を取得します。

   バックグラウンドで、アプリケーションサーバーはデータベースに対応した接続プールから物理接続を取得します。プールは、データベース名 (URL)、ユーザー名、およびパスワードなどの接続属性を定義します。

3. データベースに接続すると、アプリケーションはデータベースのデータの読み込み、変更、および追加を行うことができます。

   アプリケーションは JDBC API を呼び出すことにより、データベースにアクセスします。JDBC ドライバはアプリケーションの JDBC 呼び出しをデータベースサーバーのプロトコルに変換します。

4. データベースへのアクセスが完了すると、アプリケーションは接続を終了します。

   アプリケーションサーバーは接続を接続プールに返します。接続がプールに戻されると、次のアプリケーションがその接続を利用できるようになります。

# データベースアクセスの設定

- 「データベースアクセスを設定する」

- 「JDBC ドライバを統合する」

## データベースアクセスを設定する

##### 手順

1. サポートされたデータベース製品をインストールします。

   Application Server がサポートするデータベース製品のリストについては、リリースノートを参照してください。

2. データベース製品の JDBC ドライバをインストールします。

3. ドメインのサーバーインスタンスにアクセスできるドライバの JAR ファイルを作成します。「JDBC ドライバを統合する」を参照してください。

4. データベースを作成します。

   通常、アプリケーションプロバイダがデータベースを作成し移行するためのスクリプトを配信します。

5. データベースの接続プールを作成します。「JDBC 接続プールを作成する」を参照してください。

6. 接続プールを示す JDBC リソースを作成します。「JDBC リソースを作成する」を参照してください。

## JDBC ドライバを統合する

JDBC ドライバはアプリケーションの JDBC 呼び出しをデータベースサーバーのプロトコルに変換します。

##### 手順

JDBC ドライバを管理ドメインに統合するには、次のどれかを実行します。

- 共通クラスローダーにアクセスできるドライバを作成する

  1. ドライバの JAR および ZIP ファイルを domain-dir`/lib` ディレクトリにコピーするか、またはドライバのクラスファイルを domain-dir`/lib/ext` ディレクトリにコピーします。

  2. ドメインを再起動します。

- システムクラスローダーにアクセスできるドライバを作成する

  1. 管理コンソールのツリービュー (左側の区画) で、「設定」を選択します。

  2. default-config など、希望する設定を選択します。

  3. 「JVM 設定」を選択します。

  4. 「JVM 設定」ページで、「パス設定」タブをクリックします。

  5. 「クラスパスのサフィックス」フィールドで、ドライバの JAR ファイルの完全修飾パス名を入力します。

  6. 「保存」をクリックします。

  7. サーバーを再起動します。

# JDBC 接続プールについて

- 「JDBC 接続プールを作成する」

- 「JDBC 接続プールを編集する」

- 「接続プール設定を検証する」

- 「JDBC 接続プールを削除する」

## JDBC 接続プールを作成する

JDBC 接続プールとは、特定のデータベースのための再利用可能な接続のグループです。管理コンソールでプールを作成すると、管理者は実際には特定のデータベースへの接続の項目を定義していることになります。

##### 始める前に

プールを作成するには、まず JDBC ドライバをインストールして統合する必要があります。「JDBC ドライバを統合する」を参照してください。

「接続プールを作成」ページを構築する際は、JDBC ドライバおよびデータベースベンダーに固有の特定のデータを入力する必要があります。処理を開始する前に、次の情報を集めます。

- データベースベンダー名

- `javax.sql.DataSource` (ローカルトランザクションのみ) や `javax.sql.XADataSource` (グローバルトランザクション) などのリソースタイプ

- データソースクラス名

- データベース名 (URL)、ユーザー名、およびパスワードなどの必要なプロパティー

##### 手順

1. 管理コンソールのツリービュー (左側の区画) で、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「接続プール」ノードを選択します。

4. 「接続プール」ページで、「新規」をクリックします。

5. 最初の「接続プールを作成」ページで、次の一般設定を指定します。

   1. 「名前」フィールドで、プールの論理名を入力します。

      JDBC リソースの作成時にこの名前を指定します。

   2. 「リソースタイプ」コンボボックスからエントリを選択します。

   3. 「データベースベンダー」コンボボックスからエントリを選択します。

6. 「次へ」をクリックします。

7. 2 番目の「接続プールを作成」ページで、「データソースクラス名」フィールドの値を指定します。

   JDBC ドライバに前のページで指定したリソースタイプとデータベースベンダーのデータソースクラスがある場合は、「データソースクラス名」フィールドの値が提示されます。

8. 「次へ」をクリックします。

9. 最後に 3 番目の「接続プールを作成」ページで、次のタスクを実行します。

   1. 「一般設定」セクションでその値が正しいことを確認します。

   2. 「プール設定」、「接続検証」フィールド、および「トランザクション遮断」セクション用に、デフォルト値を保持します。

      これらの設定はあとで変更するのがもっとも便利です。「JDBC 接続プールを編集する」を参照してください。

   3. 「追加プロパティー」テーブルで、データベース名 (URL)、ユーザー名、およびパスワードなど、必要なプロパティーを追加します。

10. 「完了」をクリックします。

##### 同機能を持つ asadmin コマンド

`create-jdbc-connection-pool`

## JDBC 接続プールを編集する

「JDBC 接続プールを編集」ページは、名前を除く既存プールのすべての設定を変更する手段を提供します。

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「接続プール」ノードを展開します。

4. 編集するプールのノードを選択します。

5. 「コネクタ接続プールを編集」ページで、必要な変更を行います。

   1. 一般設定を変更します。

      一般設定の値は、インストールした固有の JDBC ドライバにより異なります。これらの設定は、Java プログラミング言語で記述されたクラスやインタフェースの名前です。

      パラメータ | 説明
      --- | ---
      データソースクラス名 | `DataSource` API、`XADataSource` API、あるいはその両方を実装するベンダー固有のクラス名。このクラスは JDBC ドライバにあります。
      リソースタイプ | 選択肢には `javax.sql.DataSource` (ローカルトランザクションのみ)、`javax.sql.XADataSource` (グローバルトランザクション)、および `java.sql.ConnectinPoolDataSource` (ローカルトランザクション、パフォーマンス向上の可能性あり) があります。

   2. プール設定を変更します。

      一連の物理データベース接続はプール内にあります。アプリケーションが接続を要求すると、接続はプールから削除され、アプリケーションが接続を解放すると、接続はプールに返されます。

      パラメータ | 説明
      --- | ---
      初期および最小プールサイズ | プール内の接続の最小数。この値は、プールを最初に作成したり、Application Server を起動したりするときの、プールに含まれる接続の数も指定します。
      最大プールサイズ | プールに含まれる接続の最大数。
      プールサイズ変更量 | プールのサイズが最小プールサイズに近づくと、プールサイズが一括処理で変更されます。この値は一括処理での接続の数を指定します。この値を過大に設定すると接続の再利用が遅れ、過小に設定すると効率が落ちます。
      アイドルタイムアウト | プールで接続がアイドル状態のままでいられる最長時間を指定します。この時間を過ぎると、接続はプールから削除されます。
      最大待ち時間 | 接続タイムアウトになる前に接続を要求するアプリケーションが待つ時間。デフォルトの待ち時間は長いので、アプリケーションがハングアップしているように見える可能性があります。

   3. 接続検証設定を変更します。

      オプションで、アプリケーションサーバーは接続が渡される前にそれを検証することができます。この検証により、ネットワークやデータベースサーバーに障害が発生してデータベースが利用できなくなった場合でも、アプリケーションサーバーが自動的にデータベース接続を再確立できます。接続の検証は追加オーバーヘッドとなるため、パフォーマンスに若干の影響が生じます。

      パラメータ | 説明
      --- | ---
      接続検証 | 必要なチェックボックスを選択して、接続検証を有効にします。
      検証方法 | アプリケーションサーバーは、auto-commit、metadata、および table の 3 つの方法でデータベース接続を検証できます。 auto-commit と metadata - アプリケーションサーバーは、`con.getAutoCommit()` メソッドと `con.getMetaData()` メソッドを呼び出して接続を検証します。ただし、多くの JDBC ドライバでは、これらの呼び出しの結果をキャッシュしているので、常に信頼のある検証が行われるとは限りません。呼び出しがキャッシュされるかどうかについて、ドライバベンダーに問い合わせる必要があります。 table - アプリケーションは指定したデータベース表に問い合わせます。表は実在し、アクセス可能である必要がありますが、行は必要ありません。多くの行を持つ既存の表や、頻繁にアクセスされる表を使用しないでください。
      表名 | 「検証方法」コンボボックスで表を選択した場合は、ここでデータベース表の名前を指定します。
      すべて障害で | 「すべての接続を閉じる」のチェックボックスを選択してある場合、1 つの接続が失敗すると、アプリケーションサーバーはプールに含まれるすべての接続を閉じ、それらを再確立します。そのチェックボックスを選択していない場合は、使用されるときにだけ個々の接続が再確立されます。

   4. トランザクション遮断設定を変更します。

      データベースは通常多くのユーザーが同時にアクセスするため、あるトランザクションがデータを読み込もうとするときに別のトランザクションが同じデータを更新する可能性があります。トランザクションの遮断レベルは、更新されるデータがほかのトランザクションに見える度合いを定義します。遮断レベルの詳細については、データベースベンダーのマニュアルを参照してください。

      パラメータ | 説明
      --- | ---
      トランザクション遮断 | プールの接続のトランザクション遮断レベルを選択できます。指定しない場合、接続は JDBC ドライバによって設定されるデフォルトの遮断レベルがプールに適用されます。
      遮断レベルを保証 | 遮断レベルを指定した場合にだけ適用されます。「保証」チェックボックスを選択する場合は、プールから取得されるすべての接続が同じ遮断レベルを持ちます。たとえば、最後の使用時に `con.setTransactionIsolation` を使って接続の遮断レベルをプログラム的に変更した場合、このメカニズムによって状態が指定された遮断レベルに戻されます。

   5. プロパティーを変更します。

      「追加プロパティー」テーブルで、データベース名 (URL)、ユーザー名、およびパスワードなど、必要なプロパティーを指定できます。データベースベンダーによってプロパティーが異なるため、詳細については、ベンダーのマニュアルを調べてください。

6. 「保存」をクリックします。

##### 参照

- 「JDBC 接続プールを作成する」

- 「接続プール設定を検証する」

- 「JDBC 接続プールを削除する」

## 接続プール設定を検証する

##### 手順

1. データベースサーバーを起動します。

2. 「Ping」をクリックします。

   管理コンソールがデータベースに接続を試みます。エラーメッセージが表示される場合は、データベースサーバーが再起動しているかどうかを確認します。

## JDBC 接続プールを削除する

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「接続プール」ノードを選択します。

4. 「接続プール」ページで、削除するプールのチェックボックスにチェックマークを付けます。

5. 「削除」をクリックします。

##### 同機能を持つ asadmin コマンド

`delete-jdbc-connection-pool`

# JDBC リソースについて

- 「JDBC リソースを作成する」

- 「JDBC リソースを編集する」

- 「JDBC リソースを削除する」

- 「JDBC リソースを有効または無効にする」

## JDBC リソースを作成する

JDBC リソース (データソース) は、アプリケーションにデータベースへ接続する手段を提供します。

##### 始める前に

JDBC リソースを作成する前に、まず JDBC 接続プールを作成します。「JDBC 接続プールを作成する」を参照してください。

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「JDBC リソース」ノードを選択します。

4. 「JDBC リソース」ページで、「新規」をクリックします。

5. 「JDBC リソースを作成」ページで、リソースの設定を指定します。

   1. 「JNDI 名」フィールドに、名前を入力します。

      慣例により、名前は `jdbc/` 文字列で始まります。次に例を示します。`jdbc/payrolldb` 。スラッシュを忘れないでください。

   2. 「プール名」コンボボックスから、新しい JDBC リソースに関連付けられた接続プールを選択します。

   3. リソースを利用不可にする場合は、「有効」チェックボックスの選択を解除します。

      デフォルトでは、リソースは作成すると同時に利用可能 (有効) です。

   4. 「説明」フィールドで、リソースの簡単な説明を入力します。

   5. 「ターゲット」セクションで、リソースが利用できるターゲット (クラスタおよびスタンドアロンサーバーインスタンス) を指定します。

      左側の希望するターゲットを選択し、「追加」をクリックして選択したターゲットのリストに追加します。

6. 「了解」をクリックします。

##### 同機能を持つ asadmin コマンド

`create-jdbc-resource`

## JDBC リソースを編集する

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「JDBC リソース」ノードを展開します。

4. 編集する JDBC リソースのノードを選択します。

5. 「JDBC リソースを編集」ページで、次のタスクを実行できます。

   1. 「プール名」コンボボックスから、別の接続プールを選択します。

   2. 「説明」フィールドで、リソースの簡単な説明を変更します。

   3. チェックボックスを選択または選択解除して、リソースを有効または無効にします。

   4. 「ターゲット」タブを選択して、リソースが利用できるターゲット (クラスタおよびスタンドアロンサーバーインスタンス) を変更します。

      リスト内の既存のターゲットのチェックボックスを選択し、「有効」をクリックしてそのターゲットのリソースを有効にするか、または「無効」をクリックしてそのターゲットのリソースを無効にします。

      「ターゲットの管理」をクリックして、リストにターゲットを追加または削除します。「ターゲットの管理」ページで、左側の利用可能なリストから希望するターゲットを選択し、「追加」をクリックして選択したターゲットのリストに追加します。「削除」をクリックして、選択したリストからターゲットを削除します。

      「了解」をクリックして、利用可能なターゲットの変更を保存します。

6. 「保存」をクリックして、編集を適用します。

## JDBC リソースを削除する

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「JDBC」ノードを展開します。

3. 「JDBC」ノードで、「接続プール」ノードを選択します。

4. 「接続プール」ページで、削除するプールのチェックボックスにチェックマークを付けます。

5. 「削除」をクリックします。

## JDBC リソースを有効または無効にする

##### 手順

1. ツリーコンポーネントで、「JDBC リソース」ノードまたは「スタンドアロンインスタンス」を展開し、「サーバーインスタンス」ノードの「リソース」タブを選択します。

2. 「リソース」ページで、有効または無効にするリソースのチェックボックスにチェックマークを付けます。

3. 「有効」または「無効」を選択します。

# 持続マネージャーリソースについて

- 「持続マネージャーリソースを作成する」

- 「持続マネージャーリソースを編集する」

- 「リソースターゲットを管理する」

- 「持続マネージャーリソースを削除する」

- 「接続マネージャーリソースを有効または無効にする」

## 持続マネージャーリソースを作成する

この機能は下位互換性のために必要です。Application Server のバージョン 7 で実行するには、コンテナ管理による持続性 Beans (EJB コンポーネントのタイプの 1 つ) を使用したアプリケーションの持続マネージャーリソースが必要でした。代わりに JDBC リソースを使用することをお勧めします。

##### 手順

1. ツリーコンポーネントで、「リソース」ノードを展開します。

2. 「リソース」ノードで、「持続マネージャー」ノードを選択します。

3. 「持続マネージャー」ページで、「新規」をクリックします。

4. 「持続マネージャーを作成」ページで、次の設定を指定します。

   1. 「JNDI 名」フィールドに、名前を入力します。

      次に例を示します。`jdo/mypm`。スラッシュを忘れないでください。

   2. 「ファクトリクラス」フィールドで、このリソースで提供されているデフォルトクラスを保持するか、またはほかの実装クラスを入力します。

   3. 「接続プール」コンボボックスから、新しい持続性マネージャーリソースが属する接続プールを選択します。

   4. 新しい持続マネージャーリソースを無効にするには、「有効」チェックボックスを選択解除します。

      デフォルトでは、新しい持続マネージャーリソースが有効になります。

   5. 「ターゲット」セクションで、リソースが利用できるターゲット (クラスタおよびスタンドアロンサーバーインスタンス) を指定します。

      左側の希望するターゲットを選択し、「追加」をクリックして選択したターゲットのリストに追加します。

5. 「了解」をクリックします。

##### 同機能を持つ asadmin コマンド

`create-persistence-resource`

## 持続マネージャーリソースを編集する

##### 手順

1. 「持続マネージャープロパティーを編集」タブから、「プロパティーを追加」を選択します。

   「追加プロパティー」テーブルに新しい行が追加されます。

2. 希望するプロパティーと値を追加します。

## リソースターゲットを管理する

##### 手順

1. 「ターゲット」タブを選択して、リソースが存在するターゲット (クラスタおよびスタンドアロンサーバーインスタンス) を変更します。

2. リスト内の既存のターゲットのチェックボックスを選択し、「有効」をクリックしてそのターゲットのリソースを有効にするか、または「無効」をクリックしてそのターゲットのリソースを無効にします。

3. 「ターゲットの管理」をクリックして、リストにターゲットを追加または削除します。

   「ターゲットの管理」ページで、左側の利用可能なリストから希望するターゲットを選択し、「追加」をクリックして選択したターゲットのリストに追加します。「削除」をクリックして、選択したリストからターゲットを削除します。

4. 「了解」をクリックして、利用可能なターゲットの変更を保存します。

5. 「保存」をクリックします。

## 持続マネージャーリソースを削除する

##### 手順

1. ツリーコンポーネントで、「持続マネージャー」ノードを展開します。

2. 「持続マネージャー」ノードを選択します。

3. 「持続マネージャー」ページで、削除する持続マネージャーのチェックボックスにチェックマークを付けます。

4. 「削除」をクリックします。

##### 同機能を持つ asadmin コマンド

`delete-persistence-resource`

## 接続マネージャーリソースを有効または無効にする

##### 手順

1. ツリーコンポーネントで、「持続マネージャー」ノードを展開します。

2. 有効または無効にするリソースのチェックボックスにチェックマークを付けます。

3. 「有効」または「無効」を選択します。

- Previous: 第 2 章 アプリケーションの配備
- Next: 第 4 章 Java Message Service (JMS) リソースの設定

- © 2010, Oracle Corporation and/or its affiliates