Sun GlassFish Enterprise Server v3 管理ガイド

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

データベース接続を確立したら、Enterprise Server アプリケーションのアクセス設定を実行できます。データベースにアクセスする前に、アプリケーションは接続を取得する必要があります。

ここでは、次のテーマを取り上げます。

JDBC 接続プールの管理

「JDBC 接続プール」は、特定のデータベースのための再利用可能な接続のグループです。新しい物理接続の作成には時間がかかるため、Enterprise Server は使用可能な接続のプールを維持します。アプリケーションが接続を要求すると、プールから 1 つの接続が取得されます。アプリケーションが接続を閉じると、接続はプールに返されます。

JDBC リソースは、リソースが関連付けられている接続プールを指定することで作成されます。複数の JDBC リソースが 1 つの接続プールを指定することもできます。接続プールのプロパティーは、データベースベンダーによっては異なる場合もあります。共通のプロパティーには、データベースの名前 (URL)、ユーザー名、パスワードなどがあります。

次のタスクと情報を使用して、JDBC 接続プールを管理します。

ProcedureJDBC 接続プールを作成する

指定した JDBC 接続プール名で新しい JDBC 接続プールを登録するには、リモートモードで create-jdbc-connection-pool サブコマンドを使用します。。JDBC 接続プールまたはコネクタ接続プールは、認証を使用して作成できます。asadmin ユーティリティーでユーザー、パスワード、またはその他の接続情報を指定するサブコマンドオプションを使用するか、XML 記述子ファイルで接続情報を指定します。

各データベースには接続プールが 1 つ必要です。アプリケーションによっては、複数の接続プールが必要な場合もあります。接続プールを構築するときに、JDBC ドライバとデータベースベンダーに固有のデータが必要となります。次に示す固有データの例の一部は、「JDBC ドライバに固有の構成」にも示してあります。

JDBC 接続プールの作成は動的なイベントであり、サーバーの再起動は必要ありません。ただし、パラメータの中には、サーバーの再起動を求めるものもあります。「サーバーの再起動が必要な構成の変更」を参照してください。

始める前に

接続プールを作成する前に、データベースとデータベースに関連する JDBC ドライバをインストールして統合しておく必要があります。手順については、「データベースの設定」を参照してください。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. create-jdbc-connection-pool(1) サブコマンドを使用して、JDBC 接続プールを作成します。

  3. (省略可能) 必要な場合は、サーバーを再起動します。

    一部のパラメータはサーバーの再起動を必要とします。「サーバーの再起動が必要な構成の変更」を参照してください。


例 14–3 JDBC 接続プールの作成

この例では、sample_derby_pool という名前の接続プールを localhost に作成します。


asadmin> create-jdbc-connection-pool 
--datasourceclassname org.apache.derby.jdbc.ClientDataSource 
--restype javax.sql.XADataSource 
--property portNumber=1527:password=APP:user=APP:serverName=
localhost:databaseName=sun-appserv-samples:connectionAttribut
es=\;create\\=true sample_derby_pool
Command create-jdbc-connection-pool executed successfully.

参照

コマンド行に asadmin help create-jdbc-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ProcedureJDBC 接続プールを一覧表示する

既存の JDBC 接続プールをすべて表示するには、リモートモードで list-jdbc-connection-pools サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-jdbc-connection-pools(1) サブコマンドを使用して、JDBC 接続プールを一覧表示します。


例 14–4 JDBC 接続プールの一覧表示

この例では、localhost 上の JDBC 接続プールを一覧表示します。


asadmin> list-jdbc-connection-pools
sample_derby_pool2
poolA
__TimerPool
DerbyPool
sample_derby_pool
Command list-jdbc-connection-pools executed successfully.

参照

コマンド行に asadmin help list-jdbc-connection-pools と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedure接続プールと通信する (ping を実行する)

接続プールが使用可能かどうかをテストするには、リモートモードで ping-connection-pool サブコマンドを使用します。たとえば、あとで配備する予定のアプリケーション用に新しい JDBC 接続プールを作成した場合、そのアプリケーションを配備する前に、このコマンドを使用して JDBC プールをテストすることができます。ping を実行すると、プールがまだ作成されていない場合は作成を強制されます。

始める前に

接続プールと通信する前に、認証を使用して接続プールを作成し、サーバーまたはデータベースを実行しておく必要があります。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. ping-connection-pool(1) サブコマンドを使用して、接続プールに ping を実行します。


例 14–5 接続プールとの通信

この例では、DerbyPool 接続プールが使用可能かどうかを確認します。


asadmin> ping-connection-pool DerbyPool
Command ping-connection-pool executed successfully

参照

コマンド行に asadmin help ping-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedure接続プールをリセット (フラッシュ) する

指定した接続プールで確立されたすべての接続を再初期化するには、リモートモードで flush-connection-pool を使用します。JDBC 接続プールまたはコネクタ接続プールは、初期状態にリセットされます。既存の動作中の接続はすべて破棄され、これらの接続に関連付けられているトランザクションは失われます。続いてプールの初期接続が再作成され、プールは通常プールサイズに復元されます。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. flush-connection-pool(1) サブコマンドを使用して、接続プールをリセットします。


例 14–6 接続プールのリセット (フラッシュ)

この例では、__TimerPool という名前の JDBC 接続プールを通常プールサイズにリセットします。


asadmin> flush-connection-pool __TimerPool 
Command flush-connection-pool executed successfully.

参照

コマンド行に asadmin help flush-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ProcedureJDBC 接続プールを更新する

get および set サブコマンドを使用して、JDBC 接続プールのプロパティーの値を表示および変更します。

  1. list-jdbc-connection-pools(1) サブコマンドを使用して、JDBC 接続プールを一覧表示します。

  2. get サブコマンドを使用して、JDBC 接続プールの属性を表示します。

    次に例を示します。


    asadmin get resources.jdbc-connection-pool.DerbyPool.property
    
  3. set サブコマンドを使用して、JDBC 接続プールの属性を設定します。

    次に例を示します。


    asadmin set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9
    
  4. (省略可能) 必要な場合は、サーバーを再起動します。

    一部のパラメータはサーバーの再起動を必要とします。「サーバーの再起動が必要な構成の変更」を参照してください。

ProcedureJDBC 接続プールを削除する

既存の JDBC 接続プールを削除するには、リモートモードで delete-jdbc-connection-pool サブコマンドを使用します。JDBC 接続プールの削除は動的なイベントであり、サーバーの再起動は必要ありません。

始める前に

JDBC 接続プールを削除する前に、リソースのすべての関連付けを削除する必要があります。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-jdbc-connection-pools(1) サブコマンドを使用して、JDBC 接続プールを一覧表示します。

  3. 必要に応じて、JDBC 接続プールを削除することをユーザーに通知します。

  4. delete-jdbc-connection-pool(1) サブコマンドを使用して、接続プールを削除します。


例 14–7 JDBC 接続プールの削除

この例では、DerbyPool という名前の JDBC 接続プールを削除します。


asadmin> delete-jdbc-connection-pool jdbc/DerbyPool
Command delete-jdbc-connection-pool executed successfully.

参照

コマンド行に asadmin help delete-jdbc-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

JDBC リソースの管理

「JDBC リソース」はデータソースとも呼ばれ、アプリケーションがデータベースに接続する手段を提供します。一般的には、ドメインに配備されたアプリケーションがアクセスするデータベースごとに 1 つの JDBC リソースを作成します。1 つのデータベースに複数の JDBC リソースを指定することもできます。

JDBC リソースは、リソースを関連付ける接続プールを指定することで作成されます。一意の Java Naming and Directory Interface (JNDI) 名を使用して、リソースを識別します。たとえば、給与データベースのリソースには、java:comp/env/jdbc/payrolldb のような JNDI 名を付けることができます。

次のタスクと情報を使用して、JDBC リソースを管理します。

ProcedureJDBC リソースを作成する

JDBC リソースを作成するには、リモートモードで create-jdbc-resource サブコマンドを使用します。JDBC リソースの作成は動的なイベントであり、サーバーの再起動は必要ありません。

すべての JNDI 名は java:comp/env サブコンテキストにあるので、管理コンソール で JDBC リソ スの JNDI を指定するときは、jdbc/name の形式だけを使用します。たとえば、先に述べた給与データベースは、jdbc/payrolldb のように指定できます。

始める前に

JDBC リソースを作成する前に、JDBC 接続プールを作成する必要があります。手順については、「JDBC 接続プールを作成する」を参照してください。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. create-jdbc-resource(1) サブコマンドを使用して、JDBC リソースを作成します。

    このサブコマンドのプロパティーについては、このマニュアルページに記載されています。

  3. 必要に応じて、新しいリソースを作成したことをユーザーに通知します。


例 14–8 JDBC リソースの作成

この例では、DerbyPool という名前の JDBC リソースを作成します。


asadmin> create-jdbc-resource --connectionpoolid DerbyPool jdbc/DerbyPool
Command create-jdbc-resource executed successfully.

参照

コマンド行に asadmin help create-jdbc-resource と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ProcedureJDBC リソースを一覧表示する

既存の JDBC リソースを一覧表示するには、リモートモードで list-jdbc-resources サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-jdbc-resources(1) サブコマンドを使用して、JDBC リソースを一覧表示します。


例 14–9 JDBC リソースの一覧表示

この例では、localhost の JDBC リソースを一覧表示します。


asadmin> list-jdbc-resources
jdbc/__TimerPool
jdbc/DerbyPool
jdbc/__default
jdbc1
Command list-jdbc-resources executed successfully.

参照

コマンド行に asadmin help list-jdbc-resources と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ProcedureJDBC リソースを更新する

set サブコマンドを使用して、JDBC リソースを有効または無効にできます。JDBC リソースはドット表記名で識別されます。

  1. list-jdbc-resources(1) サブコマンドを使用して、JDBC リソースを一覧表示します。

  2. set(1) サブコマンドを使用して、指定した JDBC リソースの値を変更します。

    次に例を示します。


例 14–10 JDBC リソースの更新

この例では、res1 の enabled の設定を false に変更します。


asadmin>set resources.jdbc-resource.res1.enabled=false

ProcedureJDBC リソースを削除する

既存の JDBC リソースを削除するには、リモートモードで delete-jdbc-resource サブコマンドを使用します。JDBC リソースの削除は動的なイベントであり、サーバーの再起動は必要ありません。

始める前に

JDBC リソースを削除する前に、削除するリソースのすべての関連付けを削除する必要があります。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-jdbc-resources(1) サブコマンドを使用して、JDBC リソースを一覧表示します。

  3. 必要に応じて、JDBC リソースを削除することをユーザーに通知します。

  4. delete-jdbc-resource(1) サブコマンドを使用して、JDBC リソースを削除します。


例 14–11 JDBC リソースの削除

この例では、DerbyPool という名前の JDBC リソースを削除します。


asadmin> delete-jdbc-resource jdbc/DerbyPool
Command delete-jdbc-resource executed successfully.

参照

コマンド行に asadmin help delete-jdbc-resource と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

JDBC ドライバの統合

接続プールとリソースを設定したあと、次のいずれかの方法で JDBC ドライバを統合します。