WebSphere Application Server for z/OS, Version 6.0.x   
             オペレーティング・システム: z/OS

             目次と検索結果のパーソナライズ化

データ・アクセス・ポータビリティー・フィーチャー

これらのインターフェースはリレーショナル・リソース・アダプター (RRA) を操作し、アプリケーション・サーバーとデータベース間の接続に対して、データベース固有の機能を動作可能にします。

言い換えれば、ご使用のアプリケーションは、コードを変更することな く、異なるデータベースからデータにアクセスし、データベースに固有の機能を使用できます。 さらに、WebSphere Application Server は、WebSphere パーシスタンスでは サポートされていないデータ・ソースをプラグインすることができます。 ただし、 データ・ソースは、XADataSource タイプまたは ConnectionPoolDataSource タイプのいずれかとしてインプリメント する必要があり、かつ、JDBC 2.x 仕様に準拠していなければなりません。

以下によってアプリケーションのポータビリティーを実現することができます。

DataStoreHelper インターフェース
このインターフェースにより、各データ・ストア・プラットフォームは 、リレーショナル・リソース・アダプターのランタイムが使用する独自のプ ライベート・データ・ストアに固有の機能をプラグインすることができます。 WebSphere Application Server は、サポートされている JDBC プロバイダーごとにインプリメンテーションを提供します。

さらに、このインターフェースは、サポートされないデータ・ソースが 使用する GenericDataStoreHelper クラスも提供します。 GenericDataStoreHelper クラスまたは他の WebSphere 提供のヘルパーをサブクラスにして、 新規データ・ソースをサポートすることができます。

注: ユーザー定義の JDBC プロバイダーを介してデータ・アクセスを構成する場合、直接 DataStoreHelper インターフェースをインプリメントしないでください。 GenericDataStoreHelper クラスをサブクラスにするか、または IBM によ って提供された DataStoreHelper インプリメンテーション・クラスの 1 つ をサブクラスにします (データベースの動作または SQL 構文がこれらの提供 されたクラスの 1 つに類似している場合)。

詳しくは API 文書 DataStoreHelper トピック (API 文 書索引にリストされているように) を参照してください。

次のコード・セグメントは、新規のデータ・ストア・ヘルパーを作成して、 サポートされていないデータ・ソース用に新規エラー・マッピングを追加する方法を示しています。

public class NewDSHelper extends GenericDataStoreHelper
{
  public NewDSHelper(java.util.Properties dataStoreHelperProperties)
  {
    super(dataStoreHelperProperties);
    java.util.Hashtable myErrorMap = null;
    myErrorMap = new java.util.Hashtable();
    myErrorMap.put(new Integer(-803), myDuplicateKeyException.class);
    myErrorMap.put(new Integer(-1015), myStaleConnectionException.class);
    myErrorMap.put("S1000", MyTableNotFoundException.class);
    setUserDefinedMap(myErrorMap);
    ...
  }
}

WSCallHelper クラス
このクラスは、ベンダー固有のメソッドおよび標準 JDBC API に準拠 しない (また、WebSphere Application Server 拡張パッケージのパーツでは ない) クラスを使用可能にする 2 つのメソッドを提供します。
  • jdbcCall() メソッド

    静的 jdbcCall() メソッドを使用することよって、JDBC オブジェクト上にベンダー固有の非標準 JDBC メソッドを起動することができます。 (詳しくは API 文書 WSCallHelper トピックを参照してください。) 以下のコード・セグメントは、DB2 データ・ソースでのこのメソッドの使 用を図示しています。

     
    Connection conn = ds.getConnection();
    // get connection attribute
    String connectionAttribute =(String) WSCallHelper.jdbcCall(DataSource.class, ds,                                  "getConnectionAttribute", null, null);
    // setAutoClose to false
    WSCallHelper.jdbcCall(java.sql.Connection.class,
    conn, "setAutoClose",
    new Object[] { new Boolean(false)},
    new Class[] { boolean.class });
    // get data store helper
    DataStoreHelper dshelper = WSCallHelper.getDataStoreHelper(ds);
    
    
  • jdbcPass() メソッド

    このメソッドを使用して、いくつかのデー タベース・ベンダーが提供している非標準 JDBC クラスを活用します。 これらのクラスには、ベンダー専有の JDBC オブジェクトをパラメーターとしてパスするように要求するメソッドが含まれています。

    特に、Oracle のインプリメンテーションは、ベンダーによって供給された非標準クラスの使用を起動することができます。 これらのクラス内に含まれているメソッドには、以下のものがあります。
    oracle.sql.ArrayDescriptor ArrayDescriptor.createDescriptor(java.lang.String, java.sql.Connection)
    oracle.sql.ARRAY new ARRAY(oracle.sql.ArrayDescriptor, java.sql.Connection, java.lang.Object)
    oracle.xml.sql.query.OracleXMLQuery(java.sql.Connection, java.lang.String)
    oracle.sql.BLOB.createTemporary(java.sql.Connection, boolean, int)
    oracle.sql.CLOB.createTemporary(java.sql.Connection, boolean, int)
    oracle.xdb.XMLType.createXML(java.sql.Connection, java.lang.String)
    以下のコード例は、jdbcPass を使用して、接続で Oracle メソッド XMLType.createXML を呼び出す方法を示しています。この Oracle 機能は、データベースがアプリケーションに渡す XML データから XML タイプのオブジェクトを作成します。
    XMLType poXML = (XMLType)(WSCallHelper.jdbcPass(XMLType.class, 
    "createXML", new Object[]{conn,poString},
    	new Class[]{java.sql.Connection.class, java.lang.String.class},
    	new int[]{WSCallHelper.CONNECTION,WSCallHelper.IGNORE}));
    jdbcPass の使用法とメソッド・パラメーターの完全なリストについては、WSCallHelper クラスの API 文書を参照してください。このインフォメーション・センターで、以下の手順で API 文書にアクセスします。
    1. 参照」>「開発者用 API 文書 (Developer API documentation)」>「アプリケーション・プログラミング・インターフェース (Application programming interfaces)」をクリックします。
    2. com.ibm.websphere.rsadapter」をクリックします。
    3. 「Class Summary」の見出しの下の「WSCallHelper」をクリックします。
    jdbcPass の最初のセクションでは、データベースの静的メソッドを呼び出すためのメソッドの使用について説明しています。 jdbcPass の 2 番目のセクションではデータベースの非静的メソッドを扱っています。
    注意: jdbcPass() メソッドを使用すると、JDBC オブジェクトが WebSphere Application Server の保護メカニズムの外側で使用されます。ある一定の操作 (autoCommit の設定やトランザクション分離設定など) を 保護メカニズムの外側で実行すると、これらプールされた接続を将来利用す る際に問題が生じます。 IBM は、このメソッドの起動後はオブジェクトの安定度を保証しません。このメソッドの起動がオブジェクトに損害を与える操作を実行しないことを確認するのは、ユーザーの責任です。 お客様自身のリスクでご使用ください。

    こうした潜在的な問題のため、WebSphere Application Server では jdbcPass() メソッドのサポートで起動できるメソッドを厳密に制御しています。 本書の前段でリストされていないメソッドへのサポートが必要な場合は、必要なメソッドの情報を用意して WebSphere Application Server サポートにお問い合わせください。




関連概念
リソース・アダプター
JDBC プロバイダー
データ・ソース
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:52:11 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/rdat_levport.html