Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanのプログラミング 11g リリース1(10.3.4) B61425-02 |
|
![]() 前 |
![]() 次 |
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番目の接続を作成するための試行時に例外がスローされます)。結果的に、各空きプールが他の空きプール接続として同一のクライアント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つの異なるサブスクリプションになることに注意します。