パッケージ jakarta.jms

インターフェース Session

すべてのスーパーインターフェース:
AutoCloseableSERunnableSE
すべての既知のサブインターフェース:
QueueSessionTopicSessionXAQueueSessionXASessionXATopicSession

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
関連事項:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final int
    この確認モードでは、セッションが receive への呼び出しから正常に戻ったとき、またはメッセージを処理するためにセッションが呼び出したメッセージリスナーが戻ったときに、クライアントのメッセージ受信を自動的に確認します。
    static final int
    この確認モードでは、クライアントはメッセージの acknowledge メソッドを呼び出して、消費されたメッセージを確認します。
    static final int
    この確認モードは、メッセージ配信の遅延確認をセッションに指示します。
    static final int
    この値は、セッションがローカルトランザクションを使用するように指定するために、Connection オブジェクトのメソッド createSession(int sessionMode) に引数として渡すことができます。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    セッションを閉じます。
    void
    このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。
    QueueBrowser オブジェクトを作成して、指定されたキューのメッセージを確認します。
    createBrowser(Queue queue, StringSE messageSelector)
    QueueBrowser オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。
    BytesMessage オブジェクトを作成します。
    指定された宛先の MessageConsumer を作成します。
    createConsumer(Destination destination, StringSE messageSelector)
    メッセージセレクターを使用して、指定した宛先の MessageConsumer を作成します。
    createConsumer(Destination destination, StringSE messageSelector, boolean noLocal)
    メッセージセレクターと noLocal パラメーターを指定して、指定した宛先の MessageConsumer を作成します。
    指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。
    createDurableConsumer(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
    メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
    指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。
    createDurableSubscriber(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
    メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
    MapMessage オブジェクトを作成します。
    Message オブジェクトを作成します。
    ObjectMessage オブジェクトを作成します。
    初期化された ObjectMessage オブジェクトを作成します。
    指定された宛先にメッセージを送信するための MessageProducer を作成します。
    指定されたプロバイダー固有のキュー名をカプセル化する Queue オブジェクトを作成します。
    createSharedConsumer(Topic topic, StringSE sharedSubscriptionName)
    指定されたトピックに指定された名前で共有の非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。
    createSharedConsumer(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector)
    メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。
    メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
    createSharedDurableConsumer(Topic topic, StringSE name, StringSE messageSelector)
    メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
    StreamMessage オブジェクトを作成します。
    TemporaryQueue オブジェクトを作成します。
    TemporaryTopic オブジェクトを作成します。
    TextMessage オブジェクトを作成します。
    初期化された TextMessage オブジェクトを作成します。
    指定されたプロバイダー固有のトピック名をカプセル化する Topic オブジェクトを作成します。
    int
    セッションの確認応答モードを返します。
    セッションの識別されたメッセージリスナーを返します(オプション)。
    boolean
    セッションがトランザクションモードであるかどうかを示します。
    void
    このセッションでのメッセージ配信を停止し、最も古い未確認のメッセージでメッセージ配信を再開します。
    void
    このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。
    void
    run()
    オプションの操作。通常の Jakarta Messaging クライアントではなく、アプリケーションサーバーでのみ使用することを目的としています。
    void
    セッションの識別メッセージリスナーを設定します(オプション)。
    void
    クライアントによって作成された永続サブスクリプションを登録解除します。
  • フィールドの詳細

    • 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
      関連事項:
    • 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 がスローされます。閉じたセッションを閉じても例外スローされませ

      次で指定:
      インターフェース AutoCloseableSEclose 
      例外:
      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

      void setMessageListener(MessageListener listener) throws JMSException
      セッションの識別メッセージリスナーを設定します(オプション)。

      識別メッセージリスナーが設定されている場合、セッションで他の形式のメッセージ受信を使用することはできません。ただし、メッセージ送信のすべての形式は引き続きサポートされています。

      これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。

      このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSException がスローされる可能性があります。

      パラメーター:
      listener - このセッションに関連付けるメッセージリスナー
      例外:
      JMSException - Jakarta Messaging プロバイダーが次のいずれかの理由でセッションの識別メッセージリスナーの設定に失敗した場合:
      • 内部エラーが発生
      • このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
      関連事項:
    • run

      void run()
      オプションの操作。通常の Jakarta Messaging クライアントではなく、アプリケーションサーバーでのみ使用することを目的としています。

      このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、JMSRuntimeException がスローされる可能性があります。

      次で指定:
      インターフェース RunnableSErun 
      例外:
      JMSRuntimeException - このメソッドが Jakarta EE Web または EJB アプリケーションで呼び出された場合 (この場合、例外がスローされることは保証されていませんが)
      関連事項:
    • 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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。

      同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。

      同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。

      同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、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 MessageConsumerJMSConsumer オブジェクトを意味します。

      非共有の永続サブスクリプションは、クライアントによって指定された名前と、設定する必要があるクライアント識別子によって識別されます。その後、非共有の永続サブスクリプションでコンシューマーを作成することを望むアプリケーションは、同じクライアント識別子を使用する必要があります。

      同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、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