JMS接続ファクトリ: 構成: クライアント
このページでは、このJMS接続ファクトリのクライアント構成パラメータを定義します。
構成オプション
名前 説明 クライアントID このJMS接続ファクトリを使用するアプリケーションの任意指定のクライアントID。「クライアントIDポリシー」を
「制限付き」
(デフォルト)に設定した場合、接続ファクトリでクライアントIDを構成すると、このファクトリの接続が複数のJMSクライアントで使用されないようになります。この属性が構成されるケースは少ないので、通常はデフォルト(空白)のままにしておきます。JMSアプリケーション・プログラムで標準のJMS API
javax.jms.JMSContext.setClientID()
またはjavax.jms.Connection.setClientID()
を使用してクライアントIDを動的に設定できます。JMSアプリケーション・メッセージ処理コンテナ(MDBなど)は通常、クライアントIDをコンテナ構成の一部として構成できます。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.ClientId
クライアントIDポリシー 「クライアントIDポリシー」は、複数のJMS接続が同じクライアントIDを使用できるかどうかを示します。
有効な値は次のとおりです。
CLIENT_ID_POLICY_RESTRICTED
- デフォルト。このポリシーを使用する、特定のクライアントIDを持つ接続は、クラスタ内に同時に1つのみ存在できます(特定のクライアントIDの接続がすでに存在する場合、同じクライアントIDでこのポリシーを使用する新しい接続を作成しようとすると、操作は失敗し、例外が発生します)。
CLIENT_ID_POLICY_UNRESTRICTED
- このポリシーを使用して作成された接続の場合、他の制限付きまたは制限なしの接続ですでに同じクライアントIDが使用されていても、任意のクライアントIDを指定できます。制限なしのクライアントIDの機能はWebLogic 10.3.4 (11gR1PS3)で追加されました。
ノート:
WebLogic JMSアプリケーションは、接続ファクトリの構成で指定されたクライアントIDポリシーをオーバーライドできます。それには、
javax.jms.JMSContext
インスタンスをweblogic.jms.extensions.WLJMSContext
に、またはjavax.jms.Connection
インスタンスをweblogic.jms.extension.WLConnection
にキャストして、setClientID(String clientID, String clientIDPolicy)
を呼び出します。同じクライアントIDを使用した2つの接続のクライアントIDポリシーが異なる場合、それぞれ独立した別の接続として扱われます。そのため、クラスタは1つの制限付きクライアントIDポリシーの接続と、同じクライアントIDを制限付き接続として使用する複数の制限なしクライアントIDポリシーの接続を同時にホストできます。
同じクライアントIDとサブスクリプション名を使用した2つの恒久サブスクリプションは、クライアントIDポリシーが異なる場合、それぞれ独立した別のサブスクリプションとして扱われます。また、2つの共有可能な非恒久サブスクリプションが同じクライアントIDを使用している場合も、クライアントIDポリシーが異なる場合はそれぞれ独立した別のサブスクリプションとして扱われます。
無制限のクライアントIDを使用して作成された恒久サブスクリプションをサブスクライブ解除するには、
javax.jms.JMSContext.unsubscribe(String name)
ではなくweblogic.jms.extensions.WLJMSContext.unsubscribe(Topic topic, String name)
を使用するか、javax.jms.Session.unsubscribe(String name)
ではなくweblogic.jms.extensions.WLSession.unsubscribe(Topic topic, String name)
を使用する必要があります。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.ClientIdPolicy
サブスクリプション共有ポリシー この接続のサブスクリプション共有ポリシーを指定します。この属性は動的に変更できますが、新しい値は今後作成される接続に対してのみ有効になります。値の変更前に作成された既存の接続には影響しません。
有効な値は次のとおりです。
排他
- デフォルト。この接続ファクトリを使用して作成したサブスクライバがすべて、他のサブスクライバとサブスクリプションを共有できないようにします。
共有可能
- この接続ファクトリを使用して作成したサブスクライバは、作成時に同じ接続ファクトリを使用したか、別の接続ファクトリを使用したかに関係なく、他のサブスクライバとサブスクリプションを共有できます。クライアントIDとクライアントIDポリシーが同じ場合にのみ、コンシューマは非恒久サブスクリプションを共有できます。クライアントID、クライアントIDポリシー、サブスクリプション名が同じ場合にのみ、コンシューマは恒久サブスクリプションを共有できます。共有可能サブスクリプションの共有機能はWebLogic 10.3.4 (11gR1PS3)で追加されました。
ノート:
WebLogic JMSアプリケーションは、接続ファクトリの構成で指定されたサブスクリプション共有ポリシーをオーバーライドできます。それには、
javax.jms.JMSContext
インスタンスをweblogic.jms.extensions.WLJMSContext
に、またはjavax.jms.Connection
インスタンスをweblogic.jms.extensions.WLConnection
にキャストして、setSubscriptionSharingPolicy(String subscriptionSharingPolicy)
を呼び出します。通常、共有可能なサブスクリプション共有ポリシーを使用するアプリケーションでは、複数の接続が同じクライアントIDを使用できるようにするために制限なしクライアントIDポリシーも使用します。
同じクライアントIDとサブスクリプション名を使用した2つの恒久サブスクリプションは、クライアントIDポリシーが異なる場合、それぞれ独立した別のサブスクリプションとして扱われます。また、2つの共有可能な非恒久サブスクリプションが同じクライアントIDを使用している場合も、クライアントIDポリシーが異なる場合はそれぞれ独立した別のサブスクリプションとして扱われます。
無制限のクライアントIDを使用して作成された恒久サブスクリプションをサブスクライブ解除するには、サブスクリプション共有ポリシー(「排他」または「共有可能」)に関係なく、
javax.jms.JMSContext.unsubscribe(String name)
ではなくweblogic.jms.extensions.WLJMSContext.unsubscribe(Topic topic, String name)
を使用するか、javax.jms.Session.unsubscribe(String name)
ではなくweblogic.jms.extensions.WLSession.unsubscribe(Topic topic, String name)
を使用する必要があります。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.SubscriptionSharingPolicy
セッション当たりの最大メッセージ数 非同期セッション向けに存在でき、メッセージ・リスナーにまだ渡されていないメッセージの最大数。同期プリフェッチ・モードが有効化されている場合、この値は1回のサーバー・アクセスでメッセージをプリフェッチする、メッセージ・コンシューマでの同期セッションにも影響します。
値 -1は、メッセージ数に制限がないことを示します。ただし、この場合、制限は残っている仮想メモリーの容量に設定されます。
メッセージの数が「最大メッセージ数」の値に達すると、次のようになります。
マルチキャスト・セッションの場合、新しいメッセージは
OverrunPolicy
パラメータによって指定されたポリシーに従って破棄され、DataOverrunExceptionがスローされます。非マルチキャスト・セッションの場合、新しいメッセージはフロー制御されるか、アプリケーションがメッセージを受け入れることができるまでサーバー上に保持されます。
マルチキャスト・セッションの場合、接続が停止してもメッセージの配信は、「最大メッセージ数」値に達するまで続行されます。この値に達すると、メッセージは「超過時のポリシー」に従って破棄されます。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.MessagesMaximum
同期コンシューマのプリフェッチ・モード 同期コンシューマが1回のサーバー・アクセスでメッセージ(つまり、サーバーからクライアントに送られるメッセージ)をプリフェッチするかどうかを指定します。
- 無効
- メッセージのプリフェッチが無効化されていることを示します。
- 有効
- 同期コンシューマ(キュー受信側またはトピック・サブスクライバ)がメッセージをプリフェッチすることを示します。「最大メッセージ数」パラメータで定義された最大メッセージ数を超える量のメッセージをプリフェッチすることはできません。
- トピック・サブスクライバのみ
- 同期トピック・サブスクライバのみがメッセージをプリフェッチすることを示します。「最大メッセージ数」パラメータで定義された最大メッセージ数を超える量のメッセージをプリフェッチすることはできません。
同期メッセージ・プリフェッチは、次の条件をサポートしておらず、これらの条件が発生するとJMS例外がスローされます。
同期メッセージ受信に対するユーザー(XA)トランザクション
(キューであるかトピックであるかに関係なく)セッションごとに複数の同期コンシューマ
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.SynchronousPrefetchMode
マルチキャストでの超過時のポリシー 未処理のマルチキャスト・メッセージ数が「最大メッセージ数」で指定された値に達し、一部のメッセージを破棄する必要があるときに使用するポリシー。
- 新しいメッセージの保持
- 最新のメッセージが最も古いメッセージよりも優先され、必要に応じて、古いメッセージが破棄されることを示します。
- 古いメッセージの保持
- 最も古いメッセージが最新のメッセージよりも優先され、必要に応じて、最新のメッセージが破棄されることを示します。
メッセージの新旧は、
JMSTimestamp
の値ではなく受信の順序によって定義されます。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.MulticastOverrunPolicy
onMessage()でのclose()を許可
close()
またはstop()
メソッドをonMessage()
メソッド呼出し内で発行できるようにするメッセージ・コンシューマを、接続ファクトリで作成するかどうかを指定します。
カスタム接続ファクトリで選択(trueに設定)されている場合、
onMessage()
メソッド呼出しは、自身のSession、ConnectionおよびJMSContexオブジェクトに対してclose()
メソッドを、または自身のConnectionおよびJMSContextオブジェクトに対してstop()
呼出しを発行できます。falseの場合、これらの呼出しは例外をスローします。デフォルトのJMS接続ファクトリ(java:comp/DefaultJMSConnectionFactory、weblogic.jms.ConnectionFactoryまたはweblogic.jms.XAConnectionFactory)では、このオプションはfalseに設定され、変更できません。
ノート: メッセージ・リスナーの
onMessage()
メソッドにより、AllowCloseInOnMessageがfalseの場合でも、固有のMessageConsumerおよびJMSConsumerのclose()
を呼び出すことができます。
この値は動的であり、いつでも変更可能です。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.AllowCloseInOnMessage
クライアント確認応答ポリシー
CLIENT_ACKNOWLEDGE
モードを使用する非トランザクション・セッションの確認応答ポリシー。「すべて」
は、メッセージの確認応答を呼び出すと、セッションで受信されたすべての未応答メッセージを確認応答することを示します。「前」
は、メッセージの確認応答を呼び出すと、そのメッセージを含む未応答メッセージのみを確認応答することを指定します。このパラメータはJMS仕様の変更の問題を回避し、非トランザクション・セッションに
CLIENT_ACKNOWLEDGE
確認応答モードを使用する実装に対してのみ適用されます。具体的に説明すると、この仕様では確認応答されるメッセージとその前のすべてのメッセージを確認応答できました。しかし、仕様の変更によって、任意のメッセージを確認応答すると受信済みのすべてのメッセージが確認応答されるようになりました(確認応答されるメッセージの後に受信したメッセージも含む)。
ACKNOWLEDGE_PREVIOUS
は、これまでの動作を保持します(確認応答されるメッセージとその前までのすべてのメッセージの確認応答)。一方、ACKNOWLEDGE_ALL
は、新しい動作をもたらします。どのメッセージが確認応答に影響を及ぼしているかにかかわらず、特定のセッションで受信されたすべてのメッセージが確認応答されます。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.AcknowledgePolicy
再接続ポリシー サーバーとのネットワーク接続が失われた後、またはサーバーの再起動時に、明示的および暗黙的にリフレッシュされるJMSクライアントのタイプを指定します。たとえば、「プロデューサ」オプションを選択すると、JMSプロデューサが明示的にリフレッシュされ、関連するすべてのセッション・クライアントおよび接続クライアントが暗黙的にリフレッシュされます。
- なし
この接続ファクトリから派生するJMSクライアントをリフレッシュしません。
- プロデューサ
この接続ファクトリから派生するすべてのJMSプロデューサ・クライアントをリフレッシュします。このオプションでは、恒久サブスクライバの構成済みクライアントIDが付いたConsumers、QueueBrowsers、またはConnectionsはリフレッシュされません。
- すべて
恒久サブスクライバの構成済みクライアントIDが付いたConnectionsを含む、この接続ファクトリから派生するすべてのJMSコンシューマ・クライアントおよびプロデューサ・クライアントをリフレッシュします。このオプションでは、QueueBrowserクライアントはリフレッシュされません。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.ReconnectPolicy
再接続ブロッキング時間
producer.send()
、consumer.receive()
、session.createBrowser()
など、任意の同期JMS呼出しが、進行中のJMSクライアント再接続を放棄せずに、呼出しスレッドをブロックする最長時間(ミリ秒)。この属性は、Reconnect Policyオプションが「プロデューサ」または「すべて」に設定されている場合のみ、有効です。値が0の場合、同期JMS呼出しは進行中のどの再接続をも待機しません。値が -1の場合、再接続を無期限に待機します。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.ReconnectBlockingMillis
再接続の合計期間 最初のネットワーク切断、または最後の同期呼出しの試行のうち、いずれか最近に起こった方の後に、JMSクライアント(特に非同期コンシューマ)が、再試行を放棄せずサーバーに再接続しようとし続ける最長時間(ミリ秒)。
この属性は、ReconnectPolicy属性が「プロデューサ」または「すべて」に設定されている場合のみ、有効です。デフォルト値 -1は、再接続が無期限に試行され続けることを意味します。値0は、再試行が1度のみ行われることを意味します。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean属性(アプリケーション・モジュールには適用しない):
ClientParamsBean.TotalReconnectPeriodMillis