クライアント情報のデータベースへの引き渡し
WebSphere® Application Server API または トレース機能を使用して、同じデータ・ソースから発している各接続についての固有のクライアント情報を渡すことができます。
このタスクについて
一部のデータベース (DB2® など) では、ユーザーのデータベース・サーバーを起動して WebSphere Application Server 接続からクライアント情報を抽出する、データ・ソースのカスタム・プロパティーをサポートします。(ご使用の製品がこの機能をサポートしているかどうか、またその製品がどのようなプロパティーを必要とするのかについては、データベースのドキュメンテーションを参照してください。)
ただし、これらのプロパティーによって導入される機能は、アプリケーション・サーバーでは限られているので注意してください。その結果、
アプリケーション・サーバーの接続マネージャーが、以下のようなリスクを伴う振る舞いをすることになり、誤ったクライアント情報がデータベースに転送される可能性があります。
- 接続マネージャーは、データ・ソースまたはそのデータ・ソースから取得された接続についてのクライアント情報を 動的に変更することはできません。
- 接続マネージャーは、そのデータ・ソースから取得したすべての接続について同一のクライアント情報を設定する必要があります。 例えば、データ・ソース clientInformation プロパティーの一部として ApplicationName を設定すると、 そのデータ・ソースからのすべての接続が同じアプリケーション名を持つことになります。
Application Server では、必要な接続管理を柔軟に行えるよう にするために、クライアント情報を渡す方法が 2 つ用意されています。 いずれの方法も、一部の接続 (他の接続には設定しません) についてクライアント情報を設定し、さらに同じデータ・ソースからの別のデータベース接続についてそれぞれ別のクライアント情報を設定するために使用されます。
手順
例: setClientInformation(Properties) API によるクライアント情報の設定
この API を用いて、接続に関する WebSphere Application Server クライアント情報を設定し、その情報をデータベースに受け渡すことができます。
次のコード例では 、com.ibm.websphere.rsadapter.WSConnection オブ ジェクトで setClientInformation(Properties) を呼び出します。
import com.ibm.websphere.rsadapter.WSConnection;
.....
try {
InitialContext ctx = new InitialContext();
//Perform a naming service lookup to get the DataSource object.
DataSource ds = (javax.sql.DataSource)ctx.lookup("java:comp/jdbc/myDS");
}catch (Exception e) {System.out.println("got an exception during lookup: " + e);}
WSConnection conn = (WSConnection) ds.getConnection();
Properties props = new properties();
props.setProperty(WSConnection.CLIENT_ID, "user123");
props.setProperty(WSConnection.CLIENT_LOCATION, "127.0.0.1");
props.setProperty(WSConnection.CLIENT_ACCOUNTING_INFO, "accounting");
props.setProperty(WSConnection.CLIENT_APPLICATION_NAME, "appname");
props.setProperty(WSConnection.CLIENT_OTHER_INFO, "cool stuff");
conn.setClientInformation(props);
conn.close()
パラメーター
props は、渡されるクライア
ント情報を含んでいます。指定可能な値は、以下のとおりです。
- WSConnection.CLIENT_ACCOUNTING_INFO
- WSConnection.CLIENT_LOCATION
- WSConnection.CLIENT_ID
- WSConnection.CLIENT_APPLICATION_NAME
- WSConnection.CLIENT_OTHER_INFO
- WSConnection.OTHER_CLIENT_TYPE
例外
この API は、データを設定する際にデータベースが例外を発行すると、 SQL 例外を作成します。