Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanの開発 12c (12.2.1) E69965-01 |
|
前 |
次 |
この付録では、トピック・サブスクリプション識別子について説明します。JMSでは、サブスクリプションは次に基づいて識別および特定されます。
サブスクリプションが関連付けられているトピック
サブスクリプションにアクセスするために使用する接続に対して指定する、接続「クライアントID」文字列
恒久サブスクリプションを使用する場合、サブスクリプション名。サブスクリプション名は次のいずれかによって設定されます。
恒久サブスクリプションが作成される場合
SubscriptionName
構成プロパティによって
SubscriptionName
プロパティを指定した場合、このプロパティを使用します。それ以外の場合、サブスクリプションが作成されると、サブスクリプション名が生成されます。
「クライアントIDポリシー」オプション。これを使用しても、サブスクリプションはWebLogic JMSで識別されます。同一物理トピック上の2つのWebLogic JMSサブスクリプション参照が、同一のクライアントIDとサブスクリプション名を持つ場合、その参照は次のようになります。
クライアントIDポリシーも同じ場合、単一のサブスクリプション
クライアントIDポリシーが異なる場合、2つの異なるサブスクリプション
WebLogic MDBコンテナは、次の設定に基づいて、前述のリストの項目1から4を自動的に生成します。
ejb-name
jms-client-id
topicMessagesDistributionMode
SubscriptionName
構成プロパティ
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つの異なるサブスクリプションになることに注意します。