データベース接続を確立したら、Enterprise Server アプリケーションのアクセス設定を実行できます。データベースにアクセスする前に、アプリケーションは接続を取得する必要があります。
ここでは、次のテーマを取り上げます。
「JDBC 接続プール」は、特定のデータベースのための再利用可能な接続のグループです。新しい物理接続の作成には時間がかかるため、Enterprise Server は使用可能な接続のプールを維持します。アプリケーションが接続を要求すると、プールから 1 つの接続が取得されます。アプリケーションが接続を閉じると、接続はプールに返されます。
JDBC リソースは、リソースが関連付けられている接続プールを指定することで作成されます。複数の JDBC リソースが 1 つの接続プールを指定することもできます。接続プールのプロパティーは、データベースベンダーによっては異なる場合もあります。共通のプロパティーには、データベースの名前 (URL)、ユーザー名、パスワードなどがあります。
次のタスクと情報を使用して、JDBC 接続プールを管理します。
指定した JDBC 接続プール名で新しい JDBC 接続プールを登録するには、リモートモードで create-jdbc-connection-pool サブコマンドを使用します。。JDBC 接続プールまたはコネクタ接続プールは、認証を使用して作成できます。asadmin ユーティリティーでユーザー、パスワード、またはその他の接続情報を指定するサブコマンドオプションを使用するか、XML 記述子ファイルで接続情報を指定します。
各データベースには接続プールが 1 つ必要です。アプリケーションによっては、複数の接続プールが必要な場合もあります。接続プールを構築するときに、JDBC ドライバとデータベースベンダーに固有のデータが必要となります。次に示す固有データの例の一部は、「JDBC ドライバに固有の構成」にも示してあります。
データベースベンダー名
javax.sql.DataSource (ローカルトランザクションのみ) や javax.sql.XADataSource (グローバルトランザクション) などのリソースタイプ
データソースクラス名
データベース名 (URL)、ユーザー名、およびパスワードなどの必要なプロパティー
JDBC 接続プールの作成は動的なイベントであり、サーバーの再起動は必要ありません。ただし、パラメータの中には、サーバーの再起動を求めるものもあります。「サーバーの再起動が必要な構成の変更」を参照してください。
接続プールを作成する前に、データベースとデータベースに関連する JDBC ドライバをインストールして統合しておく必要があります。手順については、「データベースの設定」を参照してください。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
create-jdbc-connection-pool(1) サブコマンドを使用して、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 と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
既存の JDBC 接続プールをすべて表示するには、リモートモードで list-jdbc-connection-pools サブコマンドを使用します。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-jdbc-connection-pools(1) サブコマンドを使用して、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 と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
接続プールが使用可能かどうかをテストするには、リモートモードで ping-connection-pool サブコマンドを使用します。たとえば、あとで配備する予定のアプリケーション用に新しい JDBC 接続プールを作成した場合、そのアプリケーションを配備する前に、このコマンドを使用して JDBC プールをテストすることができます。ping を実行すると、プールがまだ作成されていない場合は作成を強制されます。
接続プールと通信する前に、認証を使用して接続プールを作成し、サーバーまたはデータベースを実行しておく必要があります。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
ping-connection-pool(1) サブコマンドを使用して、接続プールに ping を実行します。
この例では、DerbyPool 接続プールが使用可能かどうかを確認します。
asadmin> ping-connection-pool DerbyPool Command ping-connection-pool executed successfully |
コマンド行に asadmin help ping-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
指定した接続プールで確立されたすべての接続を再初期化するには、リモートモードで flush-connection-pool を使用します。JDBC 接続プールまたはコネクタ接続プールは、初期状態にリセットされます。既存の動作中の接続はすべて破棄され、これらの接続に関連付けられているトランザクションは失われます。続いてプールの初期接続が再作成され、プールは通常プールサイズに復元されます。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
flush-connection-pool(1) サブコマンドを使用して、接続プールをリセットします。
この例では、__TimerPool という名前の JDBC 接続プールを通常プールサイズにリセットします。
asadmin> flush-connection-pool __TimerPool Command flush-connection-pool executed successfully. |
コマンド行に asadmin help flush-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
get および set サブコマンドを使用して、JDBC 接続プールのプロパティーの値を表示および変更します。
list-jdbc-connection-pools(1) サブコマンドを使用して、JDBC 接続プールを一覧表示します。
get サブコマンドを使用して、JDBC 接続プールの属性を表示します。
次に例を示します。
asadmin get resources.jdbc-connection-pool.DerbyPool.property |
set サブコマンドを使用して、JDBC 接続プールの属性を設定します。
次に例を示します。
asadmin set resources.jdbc-connection-pool.DerbyPool.steady-pool-size=9 |
(省略可能) 必要な場合は、サーバーを再起動します。
一部のパラメータはサーバーの再起動を必要とします。「サーバーの再起動が必要な構成の変更」を参照してください。
既存の JDBC 接続プールを削除するには、リモートモードで delete-jdbc-connection-pool サブコマンドを使用します。JDBC 接続プールの削除は動的なイベントであり、サーバーの再起動は必要ありません。
JDBC 接続プールを削除する前に、リソースのすべての関連付けを削除する必要があります。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-jdbc-connection-pools(1) サブコマンドを使用して、JDBC 接続プールを一覧表示します。
必要に応じて、JDBC 接続プールを削除することをユーザーに通知します。
delete-jdbc-connection-pool(1) サブコマンドを使用して、接続プールを削除します。
この例では、DerbyPool という名前の JDBC 接続プールを削除します。
asadmin> delete-jdbc-connection-pool jdbc/DerbyPool Command delete-jdbc-connection-pool executed successfully. |
コマンド行に asadmin help delete-jdbc-connection-pool と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
「JDBC リソース」はデータソースとも呼ばれ、アプリケーションがデータベースに接続する手段を提供します。一般的には、ドメインに配備されたアプリケーションがアクセスするデータベースごとに 1 つの JDBC リソースを作成します。1 つのデータベースに複数の JDBC リソースを指定することもできます。
JDBC リソースは、リソースを関連付ける接続プールを指定することで作成されます。一意の Java Naming and Directory Interface (JNDI) 名を使用して、リソースを識別します。たとえば、給与データベースのリソースには、java:comp/env/jdbc/payrolldb のような JNDI 名を付けることができます。
次のタスクと情報を使用して、JDBC リソースを管理します。
JDBC リソースを作成するには、リモートモードで create-jdbc-resource サブコマンドを使用します。JDBC リソースの作成は動的なイベントであり、サーバーの再起動は必要ありません。
すべての JNDI 名は java:comp/env サブコンテキストにあるので、管理コンソール で JDBC リソ スの JNDI を指定するときは、jdbc/name の形式だけを使用します。たとえば、先に述べた給与データベースは、jdbc/payrolldb のように指定できます。
JDBC リソースを作成する前に、JDBC 接続プールを作成する必要があります。手順については、「JDBC 接続プールを作成する」を参照してください。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
create-jdbc-resource(1) サブコマンドを使用して、JDBC リソースを作成します。
このサブコマンドのプロパティーについては、このマニュアルページに記載されています。
必要に応じて、新しいリソースを作成したことをユーザーに通知します。
この例では、DerbyPool という名前の JDBC リソースを作成します。
asadmin> create-jdbc-resource --connectionpoolid DerbyPool jdbc/DerbyPool Command create-jdbc-resource executed successfully. |
コマンド行に asadmin help create-jdbc-resource と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
既存の JDBC リソースを一覧表示するには、リモートモードで list-jdbc-resources サブコマンドを使用します。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-jdbc-resources(1) サブコマンドを使用して、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 と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
set サブコマンドを使用して、JDBC リソースを有効または無効にできます。JDBC リソースはドット表記名で識別されます。
list-jdbc-resources(1) サブコマンドを使用して、JDBC リソースを一覧表示します。
set(1) サブコマンドを使用して、指定した JDBC リソースの値を変更します。
次に例を示します。
この例では、res1 の enabled の設定を false に変更します。
asadmin>set resources.jdbc-resource.res1.enabled=false |
既存の JDBC リソースを削除するには、リモートモードで delete-jdbc-resource サブコマンドを使用します。JDBC リソースの削除は動的なイベントであり、サーバーの再起動は必要ありません。
JDBC リソースを削除する前に、削除するリソースのすべての関連付けを削除する必要があります。
サーバーが実行されていることを確認します。
リモートサブコマンドには、実行中のサーバーが必要です。
list-jdbc-resources(1) サブコマンドを使用して、JDBC リソースを一覧表示します。
必要に応じて、JDBC リソースを削除することをユーザーに通知します。
delete-jdbc-resource(1) サブコマンドを使用して、JDBC リソースを削除します。
この例では、DerbyPool という名前の JDBC リソースを削除します。
asadmin> delete-jdbc-resource jdbc/DerbyPool Command delete-jdbc-resource executed successfully. |
コマンド行に asadmin help delete-jdbc-resource と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。
接続プールとリソースを設定したあと、次のいずれかの方法で JDBC ドライバを統合します。
共通のクラスローダーがドライバにアクセスできるようにして、ドメインを再起動します。
ドライバの JAR および ZIP ファイルを、domain-dir/lib ディレクトリまたは glassfish_home/lib にコピーするか、ドライバのクラスファイルを domain-dir/lib/ext ディレクトリにコピーします。ドライバの JAR ファイルの完全修飾パス名が認識されます。