Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanのプログラミング 11g リリース1 (10.3.6) B61425-04 |
|
前 |
次 |
JMSでは、サブスクリプションは、(a)関連付けられるトピック、(b)サブスクリプションのアクセスに使用される接続に指定される接続「クライアントID」文字列、(c)恒久サブスクリプションを使用する場合に、恒久サブスクリプションの作成時に指定されるサブスクリプション名、に基づいて識別および検索されます。
さらに、WebLogic JMSでは、サブスクリプションは(d)「クライアントIDポリシー」オプションによっても識別されます。同一物理トピック上の2つのWebLogic JMSサブスクリプション参照が、同一のクライアントIDとサブスクリプション名を持つ場合、その参照は、クライアントIDポリシーも同一の場合には単一のサブスクリプションになり、クライアントIDポリシーが異なる場合は2つの異なるサブスクリプションになります。
WebLogicのMDBコンテナは、次の設定に基づいてa、b、c、およびdを自動的に生成します。
ejb-name
jms-client-id
topicMessagesDistributionMode
distributedDestinationConnection
generate-unique-client-id
subscriptionDurability
MDBデプロイメントおよびJMS構成の他の要素
前述の最後の4つの設定は、互換性
モードのMDBにのみ適用されます。
表B-1は、設定がサブスクリプションIDの生成に使用される仕組みをまとめています。
表B-1 サブスクリプションIDが生成される仕組み
設定 | ClientID | 恒久サブスクリプションの場合のサブスクリプション名 | WebLogicトピックのクライアントIDポリシー |
---|---|---|---|
キー:
|
|||
|
|
|
非制限 |
|
+ "_" + + "_" + |
|
非制限 |
|
+ "_" + + "_" + |
|
制限 |
次を除いて前の行と同一。
|
+ "_" + + "_" + + "_" + |
|
制限 |
|
|
|
制限 |
脚注1 非恒久互換性
モードのMDBは、クライアントIDまたはサブスクリプション名を設定せず、デフォルト制限クライアントIDポリシーを使用します。
クライアントIDの一意性は次のとおりに強制されます。
外部(WebLogic以外)のJMSベンダーの場合: JMSベンダーの中には、1つ以上の接続が同一の接続クライアントIDを指定できなくするものがあります。(2番目の接続の作成を試行すると例外がスローされます。)1つ1つのフリー・プールが、他のフリー・プール接続と同じクライアントIDを持つ可能性がある単一のJMS接続を作成するため、この制限によって1つ以上のフリー・プールが同一のクライアントIDを使用できなくなる可能性があります。MDBの最初のフリー・プール・インスタンスがクラスタ内のサーバー・インスタンスを起動した後、EJBの追加インスタンスは別のクラスタ化サーバー上で正常にデプロイできます。ただし、MDBがJMS接続の作成を試行すると、クライアントIDの競合が検出され、MDBの当該インスタンスはJMSへの完全接続に失敗します。
WebLogic JMSの場合: WebLogic Server 10.3.4以前のリリースのWebLogic JMSでは、JMS接続が制限されていたため、クラスタ範囲内に同一クライアントIDでの接続が1つのみ存在できました。ただし、WebLogic Server 10.3.4以降では、WebLogic JMS接続ファクトリまたは接続は、この制限を制御するために任意でクライアントIDポリシーを設定できます。クライアントIDポリシーをRESTRICTEDにすると、10.3.4以前の動作は残りますが、クライアントIDポリシーをUNRESTRICTEDにすると、制限は解除されます。詳細は、『Oracle WebLogic Server JMSのプログラミング』を参照してください。非制限クライアントIDを使用すると、複数のWebLogicサブスクライバ接続およびサブスクリプションが同一のクライアントIDを共有できるようになります。One-Copy-Per-Server
およびOne-Copy-Per-Application
のトピック・メッセージ配信モードは、ClientIDPolicyを非制限に設定します。同一物理トピック上の2つのWebLogic JMSサブスクリプション参照が、同一のクライアントIDと恒久サブスクリプション名を持つ場合、その参照は、クライアントIDポリシーも同一の場合には単一のサブスクリプションになり、クライアントIDポリシーが異なる場合は2つの異なるサブスクリプションになることに注意します。