WebSphere Application Server, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

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

共用不可能接続および共用可能接続

WebSphere Application Server は、共用不可能 接続と共用可能 接続の両方をサポートしています。 共用不可能接続は、アプリケーション内の他のコンポーネントとは共用されません。 この接続を使用するコンポーネントが、この接続を完全に制御します。

共用不可能とマークされたリソースにアクセスすることは、コンポーネントが使用している接続ハンドルと、そのハンドルが関連付けられる物理接続との間に 1 対 1 の関係があることを意味します。このアクセスは、getConnection メソッド に対するすべての呼び出しが、要求側ユーザーのためだけに接続ハンドルを戻すということです。通常、接続を共用している別のアプリケーションに予期しない振る舞い (例えば、分離レベルの予期しない変更) が発生すると考えられる接続に対して操作を行う可能性がある場合は、「共用不可能」を選択しなければなりません。

リソースに共用可能とマークすると、スケーラビリティーが拡大されます。getConnection() 呼び出しのたびに物理接続を新規に作成するのではなく、各 getConnection 要求が同じ接続プロパティーを持っている限り、物理接続 (すなわち管理接続) が複数の接続ハンドルで共用されます。しかし、接続の共用とは、振る舞いを変更したり共用パートナーを混乱させるようなこと (例えば、分離レベルの変更など) を接続に対して行ってはならないということを意味します。また、特定の接続を共用するかどうかはランタイムによって決まるので、ユーザーは、共用が起きることを想定して、アプリケーションをコーディングすることもできません。

接続プロパティーの要件

同じトランザクション内で使用する接続の共用を許可するには、 以下のデータ・ソース・プロパティーが同じでなければなりません。
  • Java Naming and Directory Interface (JNDI) 名。 実際には接続プロパティーではありませんが、この要件は、同じサーバーの同じデータ・ソースからの接続のみを共用できることを意味します。
  • リソース認証
  • リレーショナル・データベースの場合:
    • 分離レベル (CMP Bean に適用されたアクセス・インテント・ポリシーに該当する)
    • 読み取り専用
    • カタログ
    • TypeMap
さらに、以下の接続ファクトリーのプロパティーが、同じトランザクション内における接続の共用に対して同じでなければなりません。
  • JNDI 名。 実際には接続プロパティーではありませんが、この要件は、同じサーバーの同じリソース・アダプターからの接続のみを共用できることを意味します。
  • リソース認証
さらに、接続を取得するために使用する ConnectionSpec オブジェクトも同じである必要があります。CMP Bean との接続の共用について詳しくは、 CMP Bean との接続の共用を参照してください。

Java Message Service (JMS) 接続は、非 JMS 接続と共用することはできません。

CMP Bean との接続の共用

WebSphere Application Server では、CMP Bean、BMP Bean、および JDBC アプリケーション間で物理接続を共用して、 リソース割り振りやデッドロックのシナリオを削減することができます。 これらすべてのエンティティー Bean および JDBC アプリケーションで確実に同じ物理接続を共用するには、いくつかの方法があります。
  • CMP Bean またはメソッド間での接続の共用

    すべての CMP Bean メソッドで同じアクセス・インテントを使用する場合は、 これらのすべてで同じ物理接続を共用します。 アクセス・インテント・ポリシーが異なると、 異なる物理接続の割り振りを起動します。 例えば、CMP Bean には 2 つのメソッドがあり、メソッド 1 は wsPessimisticUpdate インテントに関連付けられており、メソッド 2 には wsOptimisticUpdate アクセス・インテントがあるとします。 メソッド 1 とメソッド 2 は、 1 つのトランザクション内で同じ物理接続を共用できません。 つまり、グローバル・トランザクションで実行するには XA データ・ソースが必要になります。

    両方のメソッドが同じテーブルにアクセスしようとする場合に、 データベースでデッドロックが起こる可能性があります。 したがって、 接続の共用は、CMP メソッドで定義されるアクセス・インテントによって決まります。

  • CMP Bean および BMP Bean 間の接続の共用

    まず、BMP Bean と CMP Bean の両方の getConnection メソッドで、 同じ接続プロパティーが設定されていることを確認してください。 CMP Bean リソースの認証タイプを一致させるには、BMP Bean リソースの認証タイプを container-managed に設定します。 これは、デプロイメント記述子において res-auth = Container として 指定されます。

    さらに、以下のいずれかのオプションを使用して、Bean タイプ間の接続共用を確認します。
  • サーブレットまたはセッション Bean で使用される CMP および JDBC アプリケーション間の接続の共用

    アクセス・インテントが CMP Bean メソッドで使用する分離レベルを決定してから、 リソース参照で指定された該当する分離レベルを使用して、 データ・ソースと接続を検索します。 詳しくは、 アクセス・インテント分離レベルおよび更新ロックならびに分離レベルおよびリソース参照を参照してください。

共用を決定する要因

ここでのリストは、包括的なものではありません。 この製品は、異なる環境下で接続を共用する場合も、共用しない場合もあります。

接続の共用違反

新しい例外として、操作が共用の要件に違反した場合にリソース・アダプターが発行する SharingViolation 例外があります。考えられる違反としては、特に、接続属性、セキュリティー設定、または分離レベルの変更などがあります。このような可変性のある操作を管理対象の接続に行った場合、以下の両方の条件に該当する場合に SharingViolation 例外が起こります。
  • 管理対象の接続に関連した接続ハンドルの数が複数である。
  • 管理対象の接続が、ローカルまたは XA のトランザクションに関連している。

コンポーネントおよび J2C ランタイムの両方とも、管理対象の接続が共用不可能になるタイミングと状況に応じて、この SharingViolation 例外を検出する必要があります。接続ハンドルを介した操作が原因で管理対象の接続が共用不可能になった場合 (例えば、分離レベルを変更するなど)、コンポーネントは例外を処理する必要があります。管理対象接続が共用不可能となって、アプリケーション・サーバーによって認識されない場合は (コンポーネントが接続ハンドルと対話することによる)、リソース・アダプターは SharingViolation 例外を発行して、接続ハンドルの作成を拒否できます。




関連概念
リソース・アダプター
データ・ソース
接続プール
接続ハンドル
分離レベル設定の要件
関連タスク
トランザクション・サービスの使用
関連資料
データ・アクセス API に対する拡張機能
サーブレット、JavaServer Pages、またはエンタープライズ・セッシ ョン Bean のマイグレーション時の接続に関する考慮事項
アクセス・インテントおよび分離レベル
アクセス・インテント・ポリシー
概念トピック    

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

最終更新: Jan 21, 2008 5:05:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cdat_conshrnon.html