インターフェース Session
- すべてのスーパーインターフェース:
AutoCloseableSE
,RunnableSE
- すべての既知のサブインターフェース:
QueueSession
、TopicSession
、XAQueueSession
、XASession
、XATopicSession
public interface Session extends RunnableSE, AutoCloseableSE
Session
オブジェクトは、メッセージを生成および消費するためのシングルスレッドコンテキストです。Java 仮想マシン(JVM)の外部にプロバイダーリソースを割り当てる場合がありますが、軽量の Jakarta Messaging オブジェクトと見なされます。セッションにはいくつかの目的があります。
- メッセージのプロデューサーとコンシューマーのファクトリです。
- プロバイダーに最適化されたメッセージファクトリを提供します。
TemporaryTopics
およびTemporaryQueues
のファクトリです。- プロバイダー固有の宛先名を動的に操作する必要があるクライアント用に、
Queue
またはTopic
オブジェクトを作成する方法を提供します。 - プロデューサーとコンシューマーにわたる作業をアトミックユニットに結合する単一の一連のトランザクションをサポートします。
- 消費するメッセージと生成するメッセージの順番を定義します。
- 確認されるまで、消費するメッセージを保持します。
- メッセージコンシューマーに登録されたメッセージリスナーの実行を直列化します。
QueueBrowsers
のファクトリです。
セッションは、複数のメッセージのプロデューサーとコンシューマーを作成および処理できます。
典型的な使用箇所の 1 つは、メッセージが到着するまで、スレッドを同期
MessageConsumer
でブロックすることです。次に、スレッドはSession
のMessageProducer
の 1 つ以上を使用できます。クライアントが 1 つのスレッドにメッセージを生成させ、他のスレッドがメッセージを消費させたい場合、クライアントはその生成スレッドに別のセッションを使用する必要があります。
接続が開始されると、1 つ以上の登録済みメッセージリスナーとのセッションは、メッセージを配信する制御スレッド専用になります。クライアントコードがこのセッションまたは別の制御スレッドからの構成オブジェクトを使用するのは誤りです。この規則の唯一の例外は、セッションまたはメッセージコンシューマー
close
メソッドの使用です。ほとんどのクライアントは、作業を自然にセッションに分割するのが簡単であるはずです。このモデルを使用すると、同時開始の必要性が高まるにつれて、クライアントはメッセージ処理の複雑さを単純かつ段階的に追加できます。
close
メソッドは、他のセッションメソッドが別のスレッドで実行されている間に呼び出すことができる唯一のセッションメソッドです。セッションはトランザクションとして指定できます。各トランザクションセッションは、単一の一連のトランザクションをサポートします。各トランザクションは、一連のメッセージ送信と一連のメッセージ受信をアトミックな作業単位にグループ化します。実際、トランザクションはセッションの入力メッセージストリームと出力メッセージストリームを一連のアトミックユニットに編成します。トランザクションがコミットされると、入力のアトミック単位が確認され、関連する出力のアトミック単位が送信されます。トランザクションのロールバックが行われると、トランザクションの送信メッセージが破棄され、セッションの入力が自動的に回復されます。
トランザクションの入力ユニットと出力ユニットの内容は、セッションの現在のトランザクション内で生成および消費されたメッセージです。
トランザクションは、セッションの
commit
メソッドまたはセッションのrollback
メソッドのいずれかを使用して完了します。セッションの現在のトランザクションの補完は、自動的に次を開始します。その結果、トランザクションセッションには、常に作業が行われる現在のトランザクションがあります。Java Transaction Service(JTS)または他のトランザクションモニターを使用して、セッションのトランザクションを他のリソース(データベース、他の Jakarta Messaging セッションなど)のトランザクションと組み合わせることができます。Java 分散トランザクションは Java Transaction API(JTA)を介して制御されるため、このコンテキストでのセッションの
commit
およびrollback
メソッドの使用は禁止されています。Jakarta Messaging API は JTA のサポートを必要としません。ただし、プロバイダーがこのサポートを提供する方法を定義します。
Jakarta Messaging クライアントが分散トランザクションを直接処理することも可能ですが、多くの Jakarta Messaging クライアントがこれを実行することはほとんどありません。Jakarta Messaging API での JTA のサポートは、Jakarta Messaging API をアプリケーションサーバー製品に統合するシステムベンダーを対象としています。
- 導入:
- JMS 1.0
- バージョン:
- Jakarta Messaging 2.0
- 関連事項:
QueueSession
,TopicSession
,XASession
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static int
AUTO_ACKNOWLEDGE
この確認モードでは、セッションがreceive
への呼び出しから正常に戻ったとき、またはメッセージを処理するためにセッションが呼び出したメッセージリスナーが戻ったときに、クライアントのメッセージ受信を自動的に確認します。static int
CLIENT_ACKNOWLEDGE
この確認モードでは、クライアントはメッセージのacknowledge
メソッドを呼び出して、消費されたメッセージを確認します。static int
DUPS_OK_ACKNOWLEDGE
この確認モードは、メッセージ配信の遅延確認をセッションに指示します。static int
SESSION_TRANSACTED
この値は、セッションがローカルトランザクションを使用するように指定するために、Connection
オブジェクトのメソッドcreateSession(int sessionMode)
に引数として渡すことができます。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 void
close()
セッションを閉じます。void
commit()
このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。QueueBrowser
createBrowser(Queue queue)
QueueBrowser
オブジェクトを作成して、指定されたキューのメッセージを確認します。QueueBrowser
createBrowser(Queue queue, StringSE messageSelector)
QueueBrowser
オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。BytesMessage
createBytesMessage()
BytesMessage
オブジェクトを作成します。MessageConsumer
createConsumer(Destination destination)
指定された宛先のMessageConsumer
を作成します。MessageConsumer
createConsumer(Destination destination, StringSE messageSelector)
メッセージセレクターを使用して、指定した宛先のMessageConsumer
を作成します。MessageConsumer
createConsumer(Destination destination, StringSE messageSelector, boolean noLocal)
メッセージセレクターとnoLocal
パラメーターを指定して、指定した宛先のMessageConsumer
を作成します。MessageConsumer
createDurableConsumer(Topic topic, StringSE name)
指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。MessageConsumer
createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。TopicSubscriber
createDurableSubscriber(Topic topic, StringSE name)
指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。TopicSubscriber
createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。MapMessage
createMapMessage()
MapMessage
オブジェクトを作成します。Message
createMessage()
Message
オブジェクトを作成します。ObjectMessage
createObjectMessage()
ObjectMessage
オブジェクトを作成します。ObjectMessage
createObjectMessage(SerializableSE object)
初期化されたObjectMessage
オブジェクトを作成します。MessageProducer
createProducer(Destination destination)
指定された宛先にメッセージを送信するためのMessageProducer
を作成します。Queue
createQueue(StringSE queueName)
指定されたプロバイダー固有のキュー名をカプセル化するQueue
オブジェクトを作成します。MessageConsumer
createSharedConsumer(Topic topic, StringSE sharedSubscriptionName)
指定されたトピックに指定された名前で共有の非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。MessageConsumer
createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector)
メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。MessageConsumer
createSharedDurableConsumer(Topic topic, StringSE name)
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。MessageConsumer
createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector)
メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。StreamMessage
createStreamMessage()
StreamMessage
オブジェクトを作成します。TemporaryQueue
createTemporaryQueue()
TemporaryQueue
オブジェクトを作成します。TemporaryTopic
createTemporaryTopic()
TemporaryTopic
オブジェクトを作成します。TextMessage
createTextMessage()
TextMessage
オブジェクトを作成します。TextMessage
createTextMessage(StringSE text)
初期化されたTextMessage
オブジェクトを作成します。Topic
createTopic(StringSE topicName)
指定されたプロバイダー固有のトピック名をカプセル化するTopic
オブジェクトを作成します。int
getAcknowledgeMode()
セッションの確認応答モードを返します。MessageListener
getMessageListener()
セッションの識別されたメッセージリスナーを返します(オプション)。boolean
getTransacted()
セッションがトランザクションモードであるかどうかを示します。void
recover()
このセッションでのメッセージ配信を停止し、最も古い未確認のメッセージでメッセージ配信を再開します。void
rollback()
このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。void
run()
オプションの操作。通常の Jakarta Messaging クライアントではなく、アプリケーションサーバーでのみ使用することを目的としています。void
setMessageListener(MessageListener listener)
セッションの識別メッセージリスナーを設定します(オプション)。void
unsubscribe(StringSE name)
クライアントによって作成された永続サブスクリプションを登録解除します。
フィールドの詳細
AUTO_ACKNOWLEDGE
static final int AUTO_ACKNOWLEDGE
この確認モードでは、セッションがreceive
への呼び出しから正常に戻ったとき、またはメッセージを処理するためにセッションが呼び出したメッセージリスナーが戻ったときに、クライアントのメッセージ受信を自動的に確認します。- 関連事項:
- 定数フィールド値
CLIENT_ACKNOWLEDGE
static final int CLIENT_ACKNOWLEDGE
この確認モードでは、クライアントはメッセージのacknowledge
メソッドを呼び出すことにより、消費されたメッセージを確認します。消費されたメッセージを確認すると、セッションが消費したすべてのメッセージが確認されます。クライアント確認応答モードが使用されている場合、クライアントは、メッセージの処理を試行中に、未確認のメッセージを大量に蓄積する可能性があります。Jakarta Messaging プロバイダーは、クライアントのオーバーランを制限する方法を管理者に提供する必要があります。これにより、クライアントが使用しているリソースが一時的にブロックされている場合に、クライアントがリソースの枯渇とその後の障害に追い込まれないようにします。
DUPS_OK_ACKNOWLEDGE
static final int DUPS_OK_ACKNOWLEDGE
この確認応答モードは、メッセージの配信を遅延して確認応答するようにセッションに指示します。これにより、Jakarta Messaging プロバイダーに障害が発生した場合に一部の重複メッセージが配信される可能性があるため、重複メッセージを許容できるコンシューマーのみが使用する必要があります。このモードを使用すると、セッションが重複を防ぐために行う作業を最小限に抑えることで、セッションのオーバーヘッドを減らすことができます。- 関連事項:
- 定数フィールド値
SESSION_TRANSACTED
static final int SESSION_TRANSACTED
この値は、セッションがローカルトランザクションを使用するように指定するために、Connection
オブジェクトのメソッドcreateSession(int sessionMode)
に引数として渡すことができます。この値は、セッションがローカルトランザクションを使用している場合、メソッド
createSession(int sessionMode)
またはメソッドcreateSession(boolean transacted, int acknowledgeMode)
のどちらを呼び出してセッションが作成されたかに関係なく、メソッドgetAcknowledgeMode
から返されます。- 導入:
- JMS 1.1
- 関連事項:
- 定数フィールド値
メソッドの詳細
createBytesMessage
BytesMessage createBytesMessage() throws JMSException
BytesMessage
オブジェクトを作成します。BytesMessage
オブジェクトは、未解釈のバイトのストリームを含むメッセージを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
BytesMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createMapMessage
MapMessage createMapMessage() throws JMSException
MapMessage
オブジェクトを作成します。MapMessage
オブジェクトは、名前と値のペアの自己定義セットを送信するために使用されます。ここで、名前はString
オブジェクトであり、値は Java プログラミング言語のプリミティブ値です。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
MapMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createMessage
Message createMessage() throws JMSException
Message
オブジェクトを作成します。Message
インターフェースは、すべての Jakarta Messaging メッセージのルートインターフェースです。Message
オブジェクトは、すべての標準メッセージヘッダー情報を保持します。ヘッダー情報のみを含むメッセージで十分な場合に送信できます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
Message
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createObjectMessage
ObjectMessage createObjectMessage() throws JMSException
ObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
ObjectMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createObjectMessage
ObjectMessage createObjectMessage(SerializableSE object) throws JMSException
初期化されたObjectMessage
オブジェクトを作成します。ObjectMessage
オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- パラメーター:
object
- このメッセージを初期化するために使用するオブジェクト- 戻り値:
ObjectMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createStreamMessage
StreamMessage createStreamMessage() throws JMSException
StreamMessage
オブジェクトを作成します。StreamMessage
オブジェクトは、Java プログラミング言語でプリミティブ値の自己定義ストリームを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
StreamMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createTextMessage
TextMessage createTextMessage() throws JMSException
TextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
オブジェクトを含むメッセージを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- 戻り値:
TextMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
createTextMessage
TextMessage createTextMessage(StringSE text) throws JMSException
初期化されたTextMessage
オブジェクトを作成します。TextMessage
オブジェクトは、String
を含むメッセージを送信するために使用されます。返されるメッセージオブジェクトは、
Session
またはJMSContext
を使用して送信できます。作成に使用されたJMSContext
を使用して送信されることに限定されません。返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。
- パラメーター:
text
- このメッセージを初期化するために使用される文字列- 戻り値:
TextMessage
オブジェクト。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
getTransacted
boolean getTransacted() throws JMSException
セッションがトランザクションモードであるかどうかを示します。- 戻り値:
- セッションがトランザクションモードの場合は true
- 例外:
JMSException
- Jakarta Messaging プロバイダーが内部エラーのためにトランザクションモードを返せなかった場合
getAcknowledgeMode
int getAcknowledgeMode() throws JMSException
セッションの確認応答モードを返します。確認応答モードは、セッションの作成時に設定されます。セッションが処理されると、確認応答モードは無視されます。- 戻り値:
- セッションが処理されない場合、セッションの現在の確認応答モードを返します。セッションがトランザクション処理される場合、SESSION_TRANSACTED を返します。
- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーが確認応答モードを返せなかった場合。- 導入:
- JMS 1.1
- 関連事項:
Connection.createSession(boolean, int)
commit
void commit() throws JMSException
このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
CompletionListener コールバックメソッドは、独自の Session で commit を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
- 例外:
IllegalStateException
-- セッションはローカルトランザクションを使用していません
- このメソッドは、独自の Session の CompletionListener コールバックメソッドによって呼び出されました
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがトランザクションのコミットに失敗した場合。TransactionRolledBackException
- コミット中に何らかの内部エラーが発生してトランザクションがロールバックされた場合。
rollback
void rollback() throws JMSException
このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
CompletionListener コールバックメソッドは、独自の Session で commit を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
- 例外:
IllegalStateException
-- セッションはローカルトランザクションを使用していません
- このメソッドは、独自の Session の CompletionListener コールバックメソッドによって呼び出されました
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがトランザクションのロールバックに失敗した場合。
close
void close() throws JMSException
セッションを閉じます。プロバイダーは JVM の外部のセッションに代わって一部のリソースを割り当てる可能性があるため、クライアントは必要のないときにリソースを閉じる必要があります。これらのリソースを最終的に再利用するためにガベージコレクションに依存することは、十分なタイミングではない場合があります。
閉じられたセッションのプロデューサーとコンシューマーを閉じる必要はありません。
この呼び出しは、進行中の
receive
呼び出しまたはメッセージリスナーが完了するまでブロックされます。ブロックされたメッセージコンシューマーのreceive
呼び出しは、このセッションが閉じられるとnull
を返します。ただし、close メソッドが独自の
Session
でメッセージリスナーから呼び出された場合、失敗してjakarta.jms.IllegalStateException
をスローするか、成功してSession
を閉じ、保留中の受信呼び出しが完了するまでブロックします。クローズが成功し、Session
の確認応答モードがAUTO_ACKNOWLEDGE
に設定されている場合、onMessage
呼び出しが完了すると、現在のメッセージは引き続き自動的に確認応答されます。この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは独自の
Session
でメッセージリスナーから close を呼び出すことを避ける必要があります。この Session の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
誤解を避けるために、
close
が呼び出されたときにこのセッションの接続の例外リスナーが実行されている場合、close
呼び出しが、例外リスナーが戻るまで待機してから戻る必要はありません。トランザクションセッションを閉じると、進行中のトランザクションをロールバックする必要があります。
このメソッドは、同時に呼び出すことができる唯一の
Session
メソッドです。CompletionListener コールバックメソッドは、独自の Session で close を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
閉じたセッションで他の
Session
メソッドを呼び出すと、IllegalStateException
がスローされます。閉じたセッションを閉じても例外はスローされません。- 次で指定:
- インターフェース
AutoCloseableSE
のclose
- 例外:
IllegalStateException
-- このメソッドは、独自の Session の MessageListener によって呼び出されました
- このメソッドは、独自の Session の CompletionListener コールバックメソッドによって呼び出されました
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがセッションを閉じることができない場合。
recover
void recover() throws JMSException
このセッションでのメッセージ配信を停止し、最も古い未確認のメッセージでメッセージ配信を再開します。すべてのコンシューマーはメッセージをシリアル順に配信します。受信したメッセージを確認すると、クライアントに配信されたすべてのメッセージが自動的に確認されます。
セッションを再開すると、次のアクションが実行されます。
- メッセージの配信を停止する
- 配信された可能性があるが、「再配信された」として確認されていないすべてのメッセージにマークを付ける
- 以前に配信されたすべての未確認メッセージを含む配信シーケンスを再開します。再配信されたメッセージは、正確に元の配信順序で配信される必要はありません。
- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ配信の停止と再開に失敗した場合IllegalStateException
- メソッドがトランザクションセッションによって呼び出された場合。
getMessageListener
MessageListener getMessageListener() throws JMSException
セッションの識別されたメッセージリスナーを返します(オプション)。このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- 戻り値:
- このセッションに関連付けられている識別されたメッセージリスナー
- 例外:
JMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由でセッションの識別されたメッセージリスナーの取得に失敗した場合:- 内部エラーが発生
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 関連事項:
setMessageListener(jakarta.jms.MessageListener)
,ServerSessionPool
,ServerSession
setMessageListener
void setMessageListener(MessageListener listener) throws JMSException
セッションの識別メッセージリスナーを設定します(オプション)。識別メッセージリスナーが設定されている場合、セッションで他の形式のメッセージ受信を使用することはできません。ただし、メッセージ送信のすべての形式は引き続きサポートされています。
これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
listener
- このセッションに関連付けるメッセージリスナー- 例外:
JMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由でセッションの識別メッセージリスナーの設定に失敗した場合:- 内部エラーが発生
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 関連事項:
getMessageListener()
,ServerSessionPool
,ServerSession
run
void run()
オプションの操作。通常の Jakarta Messaging クライアントではなく、アプリケーションサーバーでのみ使用することを目的としています。このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSRuntimeException
がスローされる可能性があります。- 次で指定:
- インターフェース
RunnableSE
のrun
- 例外:
JMSRuntimeException
- このメソッドが Jakarta EE Web または EJB アプリケーションで呼び出された場合 (この場合、例外がスローされることは保証されていませんが)- 関連事項:
ServerSession
createProducer
MessageProducer createProducer(Destination destination) throws JMSException
指定された宛先にメッセージを送信するためのMessageProducer
を作成します。クライアントは
MessageProducer
オブジェクトを使用して宛先にメッセージを送信します。Queue
とTopic
はどちらもDestination
から継承するため、これらを宛先パラメーターで使用してMessageProducer
オブジェクトを作成できます。- パラメーター:
destination
- 送信先のDestination
。これが指定された宛先を持たないプロデューサーの場合は null- 戻り値:
- メッセージを送信する
MessageProducer
。 - 例外:
JMSException
- 内部エラーのためにセッションが MessageProducer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。- 導入:
- JMS 1.1
createConsumer
MessageConsumer createConsumer(Destination destination) throws JMSException
指定された宛先のMessageConsumer
を作成します。Queue
とTopic
はどちらもDestination
から継承するため、これらを宛先パラメーターで使用してMessageConsumer
を作成できます。- パラメーター:
destination
- アクセスするDestination
- 戻り値:
- 指定された宛先の
MessageConsumer
。 - 例外:
JMSException
- 内部エラーのためにセッションがコンシューマーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。- 導入:
- JMS 1.1
createConsumer
MessageConsumer createConsumer(Destination destination, StringSE messageSelector) throws JMSException
メッセージセレクターを使用して、指定した宛先のMessageConsumer
を作成します。Queue
とTopic
はどちらもDestination
から継承するため、これらを宛先パラメーターで使用してMessageConsumer
を作成できます。クライアントは、
MessageConsumer
オブジェクトを使用して、宛先に送信されたメッセージを受信します。- パラメーター:
destination
- アクセスするDestination
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。- 戻り値:
- 指定された宛先の
MessageConsumer
。 - 例外:
JMSException
- 内部エラーのためにセッションが MessageConsumer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 1.1
createConsumer
MessageConsumer createConsumer(Destination destination, StringSE messageSelector, boolean noLocal) throws JMSException
メッセージセレクターとnoLocal
パラメーターを指定して、指定した宛先のMessageConsumer
を作成します。Queue
とTopic
はどちらもDestination
を継承しているため、これらを宛先パラメーターで使用してMessageConsumer
を作成できます。クライアントは、
MessageConsumer
オブジェクトを使用して、宛先にパブリッシュされたメッセージを受信します。noLocal
引数は、宛先がトピックであり、セッションの接続がそのトピックへのメッセージのパブリッシュにも使用されている場合に使用されます。noLocal
が true に設定されている場合、MessageConsumer
は独自の接続によってトピックに公開されたメッセージを受信しません。この引数のデフォルト値は false です。宛先がキューの場合、noLocal
を true に設定した場合の効果は指定されていません。- パラメーター:
destination
- アクセスするDestination
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。noLocal
- -true で、宛先がトピックの場合、MessageConsumer
は独自の接続によってトピックに公開されたメッセージを受信しません。- 戻り値:
- 指定された宛先の
MessageConsumer
。 - 例外:
JMSException
- 内部エラーのためにセッションが MessageConsumer の作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 1.1
createSharedConsumer
MessageConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName) throws JMSException
指定されたトピックに指定された名前で共有非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしで非永続サブスクリプションを作成します。同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターの値が指定されている場合、このメソッドは既存のサブスクリプションに
MessageConsumer
を作成します。非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの
MessageConsumer
またはJMSConsumer
オブジェクトを意味します。共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、
JMSException
投げられます。永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
- パラメーター:
topic
- サブスクライブするTopic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前- 戻り値:
- 指定されたトピックの指定された名前を持つ共有の非永続サブスクリプション。
- 例外:
JMSException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションとMessageConsumer
の作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 2.0
createSharedConsumer
MessageConsumer createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector) throws JMSException
メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに
MessageConsumer
を作成します。非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの
MessageConsumer
またはJMSConsumer
オブジェクトを意味します。共有の非永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有の非永続サブスクリプションにコンシューマーを作成することを望むアプリケーションは、同じクライアント ID を使用する必要があります。
同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、
JMSException
投げられます。永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
- パラメーター:
topic
- サブスクライブするTopic
sharedSubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが、共有の非永続サブスクリプションに追加されます。null または空の文字列の値は、共有の非永続サブスクリプションにメッセージセレクターがないことを示します。- 戻り値:
- 指定されたトピックの指定された名前を持つ共有の非永続サブスクリプション。
- 例外:
JMSException
- 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションとMessageConsumer
の作成に失敗した場合。InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 2.0
createQueue
Queue createQueue(StringSE queueName) throws JMSException
指定されたプロバイダー固有のキュー名をカプセル化するQueue
オブジェクトを作成します。アプリケーションでプロバイダー固有のキュー名を使用すると、アプリケーションが移植不可能になる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された
Queue
オブジェクトを検索することをお勧めします。このメソッドは、キューの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理キューを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理キューを作成する方法を提供しません。物理キューの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なキューの作成です。これは、
createTemporaryQueue
メソッドを使用して行われます。- パラメーター:
queueName
- プロバイダー固有のキュー名- 戻り値:
- 指定された名前をカプセル化する Queue オブジェクト
- 例外:
JMSException
- 内部エラーのために Queue オブジェクトを作成できない場合
createTopic
Topic createTopic(StringSE topicName) throws JMSException
指定されたプロバイダー固有のトピック名をカプセル化するTopic
オブジェクトを作成します。アプリケーションでプロバイダー固有のトピック名を使用すると、アプリケーションが移植できなくなる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された
Topic
オブジェクトを検索することをお勧めします。このメソッドは、トピックの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理トピックを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理トピックを作成する方法を提供しません。物理トピックの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なトピックの作成です。これは、
createTemporaryTopic
メソッドを使用して行われます。- パラメーター:
topicName
- プロバイダー固有のトピック名- 戻り値:
- 指定された名前をカプセル化する Topic オブジェクト
- 例外:
JMSException
- 内部エラーのためにトピックオブジェクトを作成できない場合
createDurableSubscriber
TopicSubscriber createDurableSubscriber(Topic topic, StringSE name) throws JMSException
指定されたトピックに非共有の永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしでnoLocal
値がfalse
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションのTopicSubscriber
。非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、
JMSException
がスローされます。同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、
noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
MessageConsumer
ではなくTopicSubscriber
を返すことを除いて、対応するcreateDurableConsumer
メソッドと同じです。- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。IllegalStateException
- クライアント識別子が設定されていない場合JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
TopicSubscriber
の作成に失敗した場合 - 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
- 導入:
- JMS 1.1
createDurableSubscriber
TopicSubscriber createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) throws JMSException
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションのTopicSubscriber
。非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、
JMSException
がスローされます。同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、
noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。noLocal
が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
MessageConsumer
ではなくTopicSubscriber
を返すことを除いて、対応するcreateDurableConsumer
メソッドと同じです。- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。IllegalStateException
- クライアント識別子が設定されていない場合JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
TopicSubscriber
の作成に失敗した場合 - 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
- 導入:
- JMS 1.1
createDurableConsumer
MessageConsumer createDurableConsumer(Topic topic, StringSE name) throws JMSException
指定されたトピックに非共有の永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしでnoLocal
値がfalse
の永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションのMessageConsumer
。非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、
JMSException
がスローされます。同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、
noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
TopicSubscriber
ではなくMessageConsumer
を返すことを除いて、対応するcreateDurableSubscriber
メソッドと同じです。- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。IllegalStateException
- クライアント識別子が設定されていない場合JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
MessageConsumer
の作成に失敗した場合 - 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
- 導入:
- JMS 2.0
createDurableConsumer
MessageConsumer createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal) throws JMSException
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
TopicSubscriber
、MessageConsumer
、JMSConsumer
オブジェクトを意味します。非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、
noLocal
値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションのMessageConsumer
。非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、
JMSException
がスローされます。同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、
noLocal
値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。noLocal
が true に設定されている場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、
JMSException
がスローされます。同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
このメソッドは、コンシューマーを表すために
TopicSubscriber
ではなくMessageConsumer
を返すことを除いて、対応するcreateDurableSubscriber
メソッドと同じです。- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。noLocal
- true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。- 戻り値:
- 指定されたトピックの非共有永続サブスクリプション。
- 例外:
InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。IllegalStateException
- クライアント識別子が設定されていない場合JMSException
-- 内部エラーのためにセッションが非共有の永続サブスクリプションと
MessageConsumer
の作成に失敗した場合 - 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
- 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
- 内部エラーのためにセッションが非共有の永続サブスクリプションと
- 導入:
- JMS 2.0
createSharedDurableConsumer
MessageConsumer createSharedDurableConsumer(Topic topic, StringSE name) throws JMSException
メッセージセレクターとnoLocal
パラメーターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしで永続サブスクリプションを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
MessageConsumer
またはJMSConsumer
オブジェクトを意味します。共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに
MessageConsumer
を作成します。共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、
JMSException
は投げられます。共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、
JMSException
がスローされます。永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前- 戻り値:
- 指定されたトピックの共有永続サブスクリプション。
- 例外:
JMSException
-- 内部エラーのためにセッションが共有永続サブスクリプションと
MessageConsumer
の作成に失敗した場合 - 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在しているが、トピックまたはメッセージセレクターが異なり、すでにアクティブなコンシューマーがある場合
- 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在する場合
- 内部エラーのためにセッションが共有永続サブスクリプションと
InvalidDestinationException
- 無効なトピックが指定された場合。- 導入:
- JMS 2.0
createSharedDurableConsumer
MessageConsumer createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector) throws JMSException
メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。
永続サブスクリプションは、
unsubscribe
メソッドを使用して削除されるまでメッセージを蓄積し続けます。このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの
MessageConsumer
またはJMSConsumer
オブジェクトを意味します。共有永続サブスクリプションは、クライアントによって指定された名前とクライアント識別子(未設定の場合があります)によって識別されます。その後、その共有永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。
同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに
MessageConsumer
を作成します。共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。
共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、
JMSException
は投げられます。共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、
JMSException
がスローされます。永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。
- パラメーター:
topic
- サブスクライブする非一時的なTopic
name
- このサブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。- 戻り値:
- 指定されたトピックの共有永続サブスクリプション。
- 例外:
JMSException
-- 内部エラーのためにセッションが共有永続サブスクリプションと
MessageConsumer
の作成に失敗した場合 - 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在しているが、トピックまたはメッセージセレクターが異なり、すでにアクティブなコンシューマーがある場合
- 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在する場合
- 内部エラーのためにセッションが共有永続サブスクリプションと
InvalidDestinationException
- 無効なトピックが指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 2.0
createBrowser
QueueBrowser createBrowser(Queue queue) throws JMSException
QueueBrowser
オブジェクトを作成して、指定されたキューのメッセージを確認します。- パラメーター:
queue
- アクセスするqueue
- 戻り値:
- 指定されたキューのメッセージをのぞく
QueueBrowser
オブジェクト。 - 例外:
JMSException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合- 導入:
- JMS 1.1
createBrowser
QueueBrowser createBrowser(Queue queue, StringSE messageSelector) throws JMSException
QueueBrowser
オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。- パラメーター:
queue
- アクセスするqueue
messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。- 戻り値:
- 指定されたキューのメッセージをのぞく
QueueBrowser
オブジェクト。 - 例外:
JMSException
- 内部エラーのためにセッションがブラウザーの作成に失敗した場合。InvalidDestinationException
- 無効な宛先が指定された場合InvalidSelectorException
- メッセージセレクタが無効な場合。- 導入:
- JMS 1.1
createTemporaryQueue
TemporaryQueue createTemporaryQueue() throws JMSException
TemporaryQueue
オブジェクトを作成します。それが以前に削除されない限り、その存続期間はConnection
の存続期間になります。- 戻り値:
- 一時的なキュー ID
- 例外:
JMSException
- 内部エラーのためにセッションが一時キューの作成に失敗した場合。- 導入:
- JMS 1.1
createTemporaryTopic
TemporaryTopic createTemporaryTopic() throws JMSException
TemporaryTopic
オブジェクトを作成します。それが以前に削除されない限り、その存続期間はConnection
の存続期間になります。- 戻り値:
- 一時的なトピックのアイデンティティ
- 例外:
JMSException
- 内部エラーのためにセッションが一時トピックの作成に失敗した場合。- 導入:
- JMS 1.1
unsubscribe
void unsubscribe(StringSE name) throws JMSException
クライアントによって作成された永続サブスクリプションを登録解除します。このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。
永続サブスクリプションは、クライアントによって指定された名前と、設定されている場合はクライアント識別子によって識別されます。永続サブスクリプションの作成時にクライアント識別子が設定されていた場合、このメソッドを使用して永続サブスクリプションを削除するクライアントは、同じクライアント識別子を使用する必要があります。
サブスクリプションにアクティブな(閉じていない)コンシューマーが存在する場合、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認されていない場合、クライアントが永続サブスクリプションを削除するのは誤りです。
- パラメーター:
name
- このサブスクリプションを識別するために使用される名前- 例外:
JMSException
- 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。InvalidDestinationException
- 無効なサブスクリプション名が指定された場合。- 導入:
- JMS 1.1