パッケージ jakarta.jms

インターフェース JMSContext

  • すべてのスーパーインターフェース:
    AutoCloseableSE
    すべての既知のサブインターフェース:
    XAJMSContext

    public interface JMSContext
    extends AutoCloseableSE
    JMSContext は、Jakarta Messaging 2.0 用に導入された簡略化された Jakarta Messaging API のメインインターフェースです。これにより、Java Message Service 1.1 API の 2 つの別個のオブジェクト(Connection と Session)の機能が 1 つのオブジェクトに結合されます。

    アプリケーションがメッセージを送信する必要がある場合は、createProducer メソッドを使用して、メッセージを構成および送信するためのメソッドを提供する JMSProducer を作成します。メッセージは、同期的または非同期的に送信できます。

    アプリケーションがメッセージを受信する必要がある場合、アプリケーションはいくつかの createConsumer または createDurableConsumer メソッドのいずれかを使用して JMSConsumer を作成します。JMSConsumer は、同期的または非同期的にメッセージを受信するためのメソッドを提供します。

    Java Message Service 1.1 API の観点から、JMSContext は Connection と Session の両方を表すと考える必要があります。簡略化された API により、アプリケーションがこれらのオブジェクトを使用する必要がなくなりますが、接続とセッションの概念は依然として重要です。接続は Jakarta Messaging サーバーへの物理リンクを表し、セッションはメッセージを送受信するためのシングルスレッドコンテキストを表します。

    JMSContext は、ConnectionFactory でいくつかの createContext メソッドの 1 つを呼び出すことによって作成できます。この方法で作成された JMSContext は、 アプリケーション管理であると説明されています。アプリケーション管理の JMSContext は、close メソッドを呼び出して、不要になったときに閉じる必要があります。

    あるいは、Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、@Inject アノテーションを使用してアプリケーションに JMSContext を挿入することもできます。この方法で作成された JMSContext は、 コンテナー管理されていると説明されてます。コンテナー管理の JMSContext は、コンテナーによって自動的に閉じられます。

    Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、接続上に複数のアクティブセッションを作成することは許可されていないため、1 つのオブジェクトに結合すると、この制限を利用してより単純な API を提供できます。

    ただし、Java SE 環境または Jakarta EE アプリケーションクライアントコンテナーで実行されているアプリケーションは、同じ接続で複数のアクティブなセッションを作成できます。これにより、同じ物理接続を複数のスレッドで同時に使用できます。同じ接続で複数のセッションを作成する必要があるこのようなアプリケーションは、ConnectionFactory で createContext メソッドの 1 つを使用して最初の JMSContext を作成し、次に JMSContext で createContext メソッドを使用して同じ接続を使用する追加の JMSContext オブジェクトを作成する必要があります。これらの JMSContext オブジェクトはすべてアプリケーションで管理されており、必要がなくなったら close メソッドを呼び出して閉じる必要があります。

    導入:
    JMS 2.0
    バージョン:
    Jakarta Messaging 2.0
    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      static intAUTO_ACKNOWLEDGE
      このセッションモードでは、JMSContext のセッションは、セッションが receive の呼び出しから正常に戻ったとき、またはセッションがメッセージを処理するために呼び出したメッセージリスナーが正常に戻ったときに、クライアントがメッセージを受信したことを自動的に確認します。
      static intCLIENT_ACKNOWLEDGE
      このセッションモードでは、クライアントはメッセージの acknowledge メソッドを呼び出すことにより、消費されたメッセージを確認します。
      static intDUPS_OK_ACKNOWLEDGE
      このセッションモードは、JMSContext のセッションにメッセージの配信を遅延確認するように指示します。
      static intSESSION_TRANSACTED
      このセッションモードは、JMSContext のセッションに、ローカルトランザクションでメッセージを配信および消費するように指示します。メッセージは、後で commit を呼び出すことによってコミットされるか、rollback を呼び出すことによってロールバックされます。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      voidacknowledge()
      JMSContext のセッションによって消費されたすべてのメッセージを確認します。
      voidclose()
      JMSContext を閉じます
      voidcommit()
      このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。
      QueueBrowsercreateBrowser​(Queue queue)
      QueueBrowser オブジェクトを作成して、指定されたキューのメッセージを確認します。
      QueueBrowsercreateBrowser​(Queue queue, StringSE messageSelector)
      QueueBrowser オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。
      BytesMessagecreateBytesMessage()
      BytesMessage オブジェクトを作成します。
      JMSConsumercreateConsumer​(Destination destination)
      指定された宛先の JMSConsumer を作成します。
      JMSConsumercreateConsumer​(Destination destination, StringSE messageSelector)
      メッセージセレクターを使用して、指定した宛先の JMSConsumer を作成します。
      JMSConsumercreateConsumer​(Destination destination, StringSE messageSelector, boolean noLocal)
      メッセージセレクターと noLocal パラメーターを指定して、指定した宛先の JMSConsumer を作成します。
      JMSContextcreateContext​(int sessionMode)
      この JMSContext と同じ接続を使用して、指定されたセッションモードで新しい JMSContext を作成し、新しいセッションを作成します。
      JMSConsumercreateDurableConsumer​(Topic topic, StringSE name)
      指定されたトピックに共有されていない永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。
      JMSConsumercreateDurableConsumer​(Topic topic, StringSE name, StringSE messageSelector, boolean noLocal)
      メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
      MapMessagecreateMapMessage()
      MapMessage オブジェクトを作成します。
      MessagecreateMessage()
      Message オブジェクトを作成します。
      ObjectMessagecreateObjectMessage()
      ObjectMessage オブジェクトを作成します。
      ObjectMessagecreateObjectMessage​(SerializableSE object)
      初期化された ObjectMessage オブジェクトを作成します。
      JMSProducercreateProducer()
      メッセージの構成と送信に使用できる新しい JMSProducer オブジェクトを作成します
      QueuecreateQueue​(StringSE queueName)
      指定されたプロバイダー固有のキュー名をカプセル化する Queue オブジェクトを作成します。
      JMSConsumercreateSharedConsumer​(Topic topic, StringSE sharedSubscriptionName)
      指定されたトピックに指定された名前で共有の非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。
      JMSConsumercreateSharedConsumer​(Topic topic, StringSE sharedSubscriptionName, StringSE messageSelector)
      メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。
      JMSConsumercreateSharedDurableConsumer​(Topic topic, StringSE name)
      メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
      JMSConsumercreateSharedDurableConsumer​(Topic topic, StringSE name, StringSE messageSelector)
      メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。
      StreamMessagecreateStreamMessage()
      StreamMessage オブジェクトを作成します。
      TemporaryQueuecreateTemporaryQueue()
      TemporaryQueue オブジェクトを作成します。
      TemporaryTopiccreateTemporaryTopic()
      TemporaryTopic オブジェクトを作成します。
      TextMessagecreateTextMessage()
      TextMessage オブジェクトを作成します。
      TextMessagecreateTextMessage​(StringSE text)
      初期化された TextMessage オブジェクトを作成します。
      TopiccreateTopic​(StringSE topicName)
      指定されたプロバイダー固有のトピック名をカプセル化する Topic オブジェクトを作成します。
      booleangetAutoStart()
      この JMSContext で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを返します。
      StringSEgetClientID()
      JMSContext の接続のクライアント識別子を取得します。
      ExceptionListenergetExceptionListener()
      JMSContext の接続用の ExceptionListener オブジェクトを取得します。
      ConnectionMetaDatagetMetaData()
      JMSContext の接続の接続メタデータを取得します。
      intgetSessionMode()
      JMSContext のセッションのセッションモードを返します。
      booleangetTransacted()
      JMSContext のセッションがトランザクションモードであるかどうかを示します。
      voidrecover()
      JMSContext のセッションでメッセージ配信を停止し、最も古い未確認メッセージでメッセージ配信を再開します。
      voidrollback()
      このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。
      voidsetAutoStart​(boolean autoStart)
      この JMSContext によって使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを指定します。
      voidsetClientID​(StringSE clientID)
      JMSContext の接続のクライアント識別子を設定します。
      voidsetExceptionListener​(ExceptionListener listener)
      JMSContext の接続の例外リスナーを設定します。
      voidstart()
      JMSContext の接続による受信メッセージの配信を開始(または再開)します。
      voidstop()
      JMSContext の接続による受信メッセージの配信を一時的に停止します。
      voidunsubscribe​(StringSE name)
      クライアントによって作成された永続サブスクリプションを登録解除します。
    • フィールドの詳細

      • AUTO_ACKNOWLEDGE

        static final int AUTO_ACKNOWLEDGE
        このセッションモードでは、JMSContext のセッションは、セッションが receive の呼び出しから正常に戻ったとき、またはセッションがメッセージを処理するために呼び出したメッセージリスナーが正常に戻ったときに、クライアントがメッセージを受信したことを自動的に確認します。
        関連事項:
        定数フィールド値
      • CLIENT_ACKNOWLEDGE

        static final int CLIENT_ACKNOWLEDGE
        このセッションモードでは、クライアントはメッセージの acknowledge メソッドを呼び出すことにより、消費されたメッセージを確認します。消費されたメッセージを確認すると、セッションが消費したすべてのメッセージが確認されます。

        このセッションモードを使用すると、クライアントは、メッセージを処理しようとしているときに、未確認のメッセージを大量に作成する可能性があります。Jakarta Messaging プロバイダーは、クライアントがリソースの枯渇に追い込まれ、使用している一部のリソースが一時的にブロックされたときに障害が発生しないように、クライアントのオーバーランを制限する方法を管理者に提供する必要があります。

        関連事項:
        Message.acknowledge(), 定数フィールド値
      • DUPS_OK_ACKNOWLEDGE

        static final int DUPS_OK_ACKNOWLEDGE
        このセッションモードは、JMSContext のセッションにメッセージの配信を遅延確認するように指示します。これにより、Jakarta Messaging プロバイダーに障害が発生した場合に重複メッセージが配信される可能性があるため、重複メッセージを許容できるコンシューマーのみが使用する必要があります。このモードを使用すると、重複を防ぐためにセッションが行う作業を最小限に抑えることで、セッションのオーバーヘッドを減らすことができます。
        関連事項:
        定数フィールド値
      • SESSION_TRANSACTED

        static final int SESSION_TRANSACTED
        このセッションモードは、JMSContext のセッションに、ローカルトランザクションでメッセージを配信および消費するように指示します。メッセージは、後で commit を呼び出すことによってコミットされるか、rollback を呼び出すことによってロールバックされます。
        関連事項:
        定数フィールド値
    • メソッドの詳細

      • createContext

        JMSContext createContext​(int sessionMode)
        この JMSContext と同じ接続を使用して、指定されたセッションモードで新しい JMSContext を作成し、新しいセッションを作成します。

        このメソッドは接続を開始しません。接続がまだ開始されていない場合は、その接続のいずれかの JMSContext オブジェクトで JMSConsumer が作成されると、接続が自動的に開始されます。

        • sessionMode が JMSContext.SESSION_TRANSACTED に設定されている場合、セッションはローカルトランザクションを使用します。ローカルトランザクションは、JMSContext の commit または rollback メソッドを呼び出すことにより、後でコミットまたはロールバックできます。
        • sessionMode が JMSContext.CLIENT_ACKNOWLEDGEJMSContext.AUTO_ACKNOWLEDGEJMSContext.DUPS_OK_ACKNOWLEDGE のいずれかに設定されている場合。その後、セッションは非トランザクションになり、このセッションで受信されたメッセージは sessionMode の値に従って確認されます。これらの確認応答モードの意味の定義については、以下のリンクを参照してください。

        このメソッドは、Jakarta EE Web または EJB コンテナーで実行されているアプリケーションで使用しないでください。使用すると、そのようなアプリケーションが接続ごとに複数のアクティブな(閉じていない) Session オブジェクトを作成しようとしてはならないという制限に違反するためです。このメソッドが Jakarta EE Web または EJB コンテナーで呼び出されると、JMSRuntimeException がスローされます。

        パラメーター:
        sessionMode - 4 つの可能なセッションモードのどれが使用されるかを示します。許可される値は JMSContext.SESSION_TRANSACTEDJMSContext.CLIENT_ACKNOWLEDGEJMSContext.AUTO_ACKNOWLEDGEJMSContext.DUPS_OK_ACKNOWLEDGE です。
        戻り値:
        新しく作成された JMSContext
        例外:
        JMSRuntimeException - Jakarta Messaging プロバイダーが JMSContext の作成に失敗した場合
        • 内部エラーまたは
        • このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されているためです。
        導入:
        JMS 2.0
        関連事項:
        SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE, ConnectionFactory.createContext(), ConnectionFactory.createContext(int), ConnectionFactory.createContext(java.lang.String, java.lang.String), ConnectionFactory.createContext(java.lang.String, java.lang.String, int), createContext(int)
      • createProducer

        JMSProducer createProducer()
        メッセージの構成と送信に使用できる新しい JMSProducer オブジェクトを作成します
        戻り値:
        新しい JMSProducer オブジェクト
        関連事項:
        JMSProducer
      • getClientID

        StringSE getClientID()
        JMSContext の接続のクライアント識別子を取得します。

        この値は、Jakarta Messaging プロバイダーに固有です。これは、管理者が ConnectionFactory オブジェクトで事前構成するか、setClientID メソッドを呼び出してアプリケーションによって動的に割り当てられます。

        戻り値:
        一意のクライアント識別子
        例外:
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーが JMSContext の接続のクライアント ID を返さない場合。
      • setClientID

        void setClientID​(StringSE clientID)
        JMSContext の接続のクライアント識別子を設定します。

        Jakarta Messaging クライアントのクライアント ID を割り当てるための推奨される方法は、クライアント固有の ConnectionFactory オブジェクトで構成し、それが作成する Connection オブジェクトに透過的に割り当てることです。

        あるいは、クライアントは、プロバイダー固有の値を使用して、JMSContext の接続のクライアント ID を設定できます。クライアント ID を明示的に設定する機能は、管理上構成されている ID をオーバーライドするためのメカニズムではありません。管理上指定された識別子が存在しない場合に提供されます。存在する場合、それを設定して変更しようとすると、IllegalStateRuntimeException をスローする必要があります。クライアントがクライアント識別子を明示的に設定する場合、JMSContext を作成した直後、JMSContext で他のアクションが実行される前に設定する必要があります。この時点以降、クライアント ID の設定はプログラミングエラーであり、IllegalStateRuntimeException をスローする必要があります。

        クライアント識別子の目的は、JMSContext の接続とそのオブジェクトを、プロバイダーによってクライアントに代わって維持される状態に関連付けることです。Jakarta Messaging API によって識別されるそのような状態は、永続サブスクリプションをサポートするために必要な状態だけです。

        このメソッドが呼び出されたときに同じ clientID との別の接続がすでに実行されている場合、Jakarta Messaging プロバイダーは重複する ID を検出して InvalidClientIDException をスローする必要があります。

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

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        パラメーター:
        clientID - 一意のクライアント識別子
        例外:
        InvalidClientIDRuntimeException - Jakarta Messaging クライアントが無効または重複したクライアント ID を指定した場合。
        IllegalStateRuntimeException -
        • Jakarta Messaging クライアントが JMSContext の接続のクライアント ID を間違った時間に設定しようとした場合、または
        • クライアント ID が管理上構成されている場合、または
        • JMSContext がコンテナー管理(注入)されている場合。
        JMSRuntimeException - 以下のいずれかの理由により、Jakarta Messaging プロバイダーが JMSContext の接続のクライアント ID を設定できなかった場合:
        • 内部エラーが発生した、または
        • このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
      • getMetaData

        ConnectionMetaData getMetaData()
        JMSContext の接続の接続メタデータを取得します。
        戻り値:
        接続メタデータ
        例外:
        JMSRuntimeException - Jakarta Messaging プロバイダーが接続メタデータの取得に失敗した場合
        関連事項:
        ConnectionMetaData
      • getExceptionListener

        ExceptionListener getExceptionListener()
        JMSContext の接続用の ExceptionListener オブジェクトを取得します。すべての Connection に ExceptionListener が関連付けられているわけではありません。
        戻り値:
        JMSContext の接続の ExceptionListener、または ExceptionListener がその接続に関連付けられていない場合は null。
        例外:
        JMSRuntimeException - Jakarta Messaging プロバイダーが JMSContext の接続用の ExceptionListener の取得に失敗した場合。
        関連事項:
        Connection.setExceptionListener(jakarta.jms.ExceptionListener)
      • setExceptionListener

        void setExceptionListener​(ExceptionListener listener)
        JMSContext の接続の例外リスナーを設定します。

        Jakarta Messaging プロバイダーは、接続に重大な問題を検出すると、接続の ExceptionListener が登録されているかどうかを通知します。これを行うには、リスナーの onException メソッドを呼び出し、問題を説明する JMSRuntimeException オブジェクトを渡します。

        例外リスナーを使用すると、クライアントに問題を非同期的に通知できます。一部の接続はメッセージのみを消費するため、接続が失敗したことを知る方法が他にありません。

        接続は、その ExceptionListener の実行を直列化します。

        Jakarta Messaging プロバイダーは、クライアントに通知する前に、接続の問題自体を解決する必要があります。

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

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        パラメーター:
        listener - 例外リスナー
        例外:
        IllegalStateRuntimeException - JMSContext がコンテナー管理(注入)されている場合。
        JMSRuntimeException - Jakarta Messaging プロバイダーが次のいずれかの理由で例外リスナーの設定に失敗した場合:
        • 内部エラーが発生した、または
        • このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
      • start

        void start()
        JMSContext の接続による受信メッセージの配信を開始 (または再開) します。すでに開始されている接続での start への呼び出しは無視されます。また、JMSContext によって使用される基礎となる接続は、コンシューマーの作成時に自動的に開始されるため、通常、アプリケーションがこのメソッドを呼び出す必要はありません。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException - JMSContext がコンテナー管理(注入)されている場合。
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージ配信の開始に失敗した場合。
        関連事項:
        stop()
      • stop

        void stop()
        JMSContext の接続による受信メッセージの配信を一時的に停止します。start メソッドを使用して配信を再開できます。接続が停止すると、接続のすべてのメッセージコンシューマーへの配信が禁止されます。同期受信ブロックであり、メッセージはメッセージリスナーに配信されません。

        接続を停止しても、メッセージを送信する機能には影響しません。すでに停止している接続での stop の呼び出しは無視されます。

        stop の呼び出しは、メッセージの配信が一時停止するまで戻りません。つまり、クライアントは、そのメッセージリスナーが呼び出されず、receive 呼び出しが戻るのを待っているすべての制御スレッドが、接続が再開されるまでメッセージを返さないという事実に依存できます。停止した接続の受信タイマーは進み続けるため、接続が停止している間は受信がタイムアウトする場合があります。

        stop が呼び出されたときにメッセージリスナーが実行されている場合、stop 呼び出しは、すべてのリスナーが戻るまで待機してから戻る必要があります。これらのメッセージリスナーが完了する間、それらは利用可能な接続の完全なサービスを持っている必要があります。

        ただし、stop メソッドがそれ自体の JMSContext または同じ接続を使用する他の JMSContext のメッセージリスナーから呼び出された場合、失敗して jakarta.jms.IllegalStateRuntimeException をスローするか、成功して接続を停止し、他のすべてのメッセージまでブロックします。実行されていた可能性のあるリスナーが戻ってきました。

        この場合、2 つの代替動作が許可されるため、アプリケーションは、独自の JMSContext または同じ接続を使用する他の JMSContext のメッセージリスナーから stop を呼び出さないようにする必要があります。これは、移植性がないためです。

        誤解を避けるために、stop が呼び出されたときに JMSContext の接続の例外リスナーが実行されている場合、stop 呼び出しは、例外リスナーが戻るまで待機してから戻る必要はありません。

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

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException -
        • このメソッドが MessageListener によって独自の JMSContext で呼び出された場合
        • JMSContext がコンテナー管理(注入)されている場合。
        JMSRuntimeException - Jakarta Messaging プロバイダーが次のいずれかの理由でメッセージ配信の停止に失敗した場合:
        • 内部エラーが発生した、または
        • このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
        関連事項:
        start()
      • setAutoStart

        void setAutoStart​(boolean autoStart)
        この JMSContext によって使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを指定します。これはデフォルトの動作であり、false の値を指定してこのメソッドを呼び出すことで無効にできます。

        このメソッド自体は、接続を開始または停止しません。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        パラメーター:
        autoStart - この JMSContext で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうか。
        例外:
        IllegalStateRuntimeException - JMSContext がコンテナー管理されている場合 (注入された)
        関連事項:
        getAutoStart()
      • getAutoStart

        boolean getAutoStart()
        この JMSContext で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうかを返します。
        戻り値:
        この JMSContext で使用される基になる接続が、コンシューマーの作成時に自動的に開始されるかどうか。
        関連事項:
        setAutoStart(boolean)
      • close

        void close()
        JMSContext を閉じます

        これにより、基になるセッションと、基になるプロデューサーおよびコンシューマーが閉じられます。基になる接続を使用している他のアクティブな(閉じられていない)JMSContext オブジェクトがない場合、このメソッドは基になる接続も閉じます。

        プロバイダーは通常、接続に代わって JVM の外部に重要なリソースを割り当てるため、クライアントはこれらのリソースが不要になったときに閉じる必要があります。これらのリソースを最終的に再利用するためにガベージコレクションに依存することは、十分なタイミングではない場合があります。

        接続を閉じると、すべての一時的な宛先が削除されます。

        このメソッドが呼び出されると、メッセージ処理が正常にシャットダウンされるまで戻らないはずです。これは、実行されていた可能性のあるすべてのメッセージリスナーが返され、保留中のすべての受信が返されたことを意味します。閉じるは、接続のセッションのコンシューマーで受信するすべての保留中のメッセージを終了します。受信者は、クローズ時に利用可能なメッセージがあったかどうかに応じて、メッセージまたは null で戻る場合があります。接続 close が呼び出されたときに、接続のセッションのメッセージリスナーの 1 つ以上がメッセージを処理している場合、接続とそのセッションのすべての機能は、Jakarta Messaging プロバイダーに制御を戻すまでそれらのリスナーが使用できる状態を維持する必要があります。

        ただし、close メソッドがメッセージリスナーから独自の JMSContext で呼び出された場合は、失敗して jakarta.jms.IllegalStateRuntimeException をスローするか、成功して JMSContext を閉じます。close が成功し、JMSContext のセッションモードが AUTO_ACKNOWLEDGE に設定されている場合、onMessage 呼び出しが完了すると、現在のメッセージは自動的に確認応答されます。

        この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは独自の JMSContext でメッセージリスナーから close を呼び出すことを避ける必要があります。

        このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。

        誤解を避けるために、close が呼び出されたときに JMSContext の接続の例外リスナーが実行されている場合、close 呼び出しは、例外リスナーが戻るまで待機してから戻る必要はありません。

        接続を閉じると、進行中のセッションのトランザクションがロールバックされます。セッションの作業が外部のトランザクションマネージャーによって調整される場合、セッションの commit および rollback メソッドは使用されず、閉じられたセッションの作業の結果は後でトランザクションマネージャーによって決定されます。

        接続を閉じても、クライアントが確認したセッションの確認は強制されません。

        閉じた接続のセッションから受信したメッセージの acknowledge メソッドを呼び出すには、IllegalStateRuntimeException をスローする必要があります。閉じた接続を閉じても、例外をスローしてはなりません。

        CompletionListener コールバックメソッドはそれ自体の JMSContext close を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        次で指定:
        インターフェース AutoCloseableSEclose 
        例外:
        IllegalStateRuntimeException -
        • このメソッドが MessageListener によって独自の JMSContext で呼び出された場合
        • このメソッドが CompletionListener コールバックメソッドによって独自の JMSContext で呼び出された場合
        • JMSContext がコンテナー管理されている場合 (注入された)
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーが JMSContext を閉じることができない場合。例: リソースの解放またはソケット接続のクローズに失敗すると、この例外がスローされる可能性があります。
      • createBytesMessage

        BytesMessage createBytesMessage()
        BytesMessage オブジェクトを作成します。BytesMessage オブジェクトは、未解釈のバイトのストリームを含むメッセージを送信するために使用されます。
        戻り値:
        作成された BytesMessage オブジェクト
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createMapMessage

        MapMessage createMapMessage()
        MapMessage オブジェクトを作成します。MapMessage オブジェクトは、名前と値のペアの自己定義セットを送信するために使用されます。ここで、名前は String オブジェクトであり、値は Java プログラミング言語のプリミティブ値です。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        戻り値:
        作成された MapMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createMessage

        Message createMessage()
        Message オブジェクトを作成します。Message インターフェースは、すべての Jakarta Messaging メッセージのルートインターフェースです。Message オブジェクトは、すべての標準メッセージヘッダー情報を保持します。ヘッダー情報のみを含むメッセージで十分な場合に送信できます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        戻り値:
        作成された Message オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createObjectMessage

        ObjectMessage createObjectMessage()
        ObjectMessage オブジェクトを作成します。ObjectMessage オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        戻り値:
        作成された ObjectMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createObjectMessage

        ObjectMessage createObjectMessage​(SerializableSE object)
        初期化された ObjectMessage オブジェクトを作成します。ObjectMessage オブジェクトは、シリアライズ可能な Java オブジェクトを含むメッセージを送信するために使用されます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        パラメーター:
        object - このメッセージを初期化するために使用するオブジェクト
        戻り値:
        作成された ObjectMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createStreamMessage

        StreamMessage createStreamMessage()
        StreamMessage オブジェクトを作成します。StreamMessage オブジェクトは、Java プログラミング言語でプリミティブ値の自己定義ストリームを送信するために使用されます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        戻り値:
        作成された StreamMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createTextMessage

        TextMessage createTextMessage()
        TextMessage オブジェクトを作成します。TextMessage オブジェクトは、String オブジェクトを含むメッセージを送信するために使用されます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        戻り値:
        作成された TextMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • createTextMessage

        TextMessage createTextMessage​(StringSE text)
        初期化された TextMessage オブジェクトを作成します。TextMessage オブジェクトは、String を含むメッセージを送信するために使用されます。

        返されるメッセージオブジェクトは、Session または JMSContext を使用して送信できます。作成に使用された JMSContext を使用して送信されることに限定されません。

        返されたメッセージオブジェクトは、作成に使用された Jakarta Messaging プロバイダーで使用するために最適化されている場合があります。ただし、作成に使用した Jakarta Messaging プロバイダーだけでなく、任意の Jakarta Messaging プロバイダーを使用して送信できます。

        パラメーター:
        text - このメッセージを初期化するために使用される文字列
        戻り値:
        作成された TextMessage オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーがこのメッセージの作成に失敗した場合。
      • getTransacted

        boolean getTransacted()
        JMSContext のセッションがトランザクションモードであるかどうかを示します。
        戻り値:
        セッションがトランザクションモードの場合は true
        例外:
        JMSRuntimeException - Jakarta Messaging プロバイダーが内部エラーのためにトランザクションモードを返せなかった場合
      • getSessionMode

        int getSessionMode()
        JMSContext のセッションのセッションモードを返します。これは、JMSContext の作成時に設定できます。可能な値は、JMSContext.SESSION_TRANSACTED、JMSContext.AUTO_ACKNOWLEDGE、JMSContext.CLIENT_ACKNOWLEDGE、および JMSContext.DUPS_OK_ACKNOWLEDGE です。

        JMSContext の作成時にセッションモードが指定されていなかった場合、JMSContext.AUTO_ACKNOWLEDGE の値が返されます。

        戻り値:
        JMSContext のセッションのセッションモード
        例外:
        JMSRuntimeException - 内部エラーのために Jakarta Messaging プロバイダーが確認応答モードを返せなかった場合。
        導入:
        JMS 2.0
        関連事項:
        Connection.createSession(boolean, int)
      • commit

        void commit()
        このトランザクションで実行されたすべてのメッセージをコミットし、現在保持されているロックを解放します。

        このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。

        CompletionListener コールバックメソッドはそれ自体の JMSContext commit を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException -
        • JMSContext のセッションがローカルトランザクションを使用していない場合
        • このメソッドが CompletionListener コールバックメソッドによって独自の JMSContext によって呼び出された場合
        • JMSContext がコンテナー管理されている場合 (注入された)
        TransactionRolledBackRuntimeException - コミット中に何らかの内部エラーが発生してトランザクションがロールバックされた場合。
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーがトランザクションのコミットに失敗した場合
      • rollback

        void rollback()
        このトランザクションで実行されたメッセージをロールバックし、現在保持されているロックを解放します。

        このメソッドは、この JMSContext の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで返さないでください。エラーが発生しない限り、不完全な送信は正常に完了することが許可されている必要があります。

        CompletionListener コールバックメソッドはそれ自体の JMSContext rollback を呼び出さないでください。これを行うと、 IllegalStateRuntimeException がスローされます。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException -
        • JMSContext のセッションがローカルトランザクションを使用していない場合
        • このメソッドが CompletionListener コールバックメソッドによって独自の JMSContext で呼び出された場合
        • JMSContext がコンテナー管理されている場合 (注入された)
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーがトランザクションのロールバックに失敗した場合
      • recover

        void recover()
        JMSContext のセッションでメッセージ配信を停止し、最も古い未確認メッセージでメッセージ配信を再開します。

        すべてのコンシューマーはメッセージをシリアル順に配信します。受信したメッセージを確認すると、クライアントに配信されたすべてのメッセージが自動的に確認されます。

        セッションを再開すると、次のアクションが実行されます。

        • メッセージの配信を停止する
        • 配信された可能性があるが、「再配信された」として確認されていないすべてのメッセージにマークを付ける
        • 以前に配信されたすべての未確認メッセージを含む配信シーケンスを再開します。再配信されたメッセージは、正確に元の配信順序で配信される必要はありません。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException -
        • JMSContext のセッションがトランザクションを使用している場合
        • JMSContext がコンテナー管理されている場合 (注入された)
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージ配信の停止と再開に失敗した場合
      • createConsumer

        JMSConsumer createConsumer​(Destination destination)
        指定された宛先の JMSConsumer を作成します。

        クライアントは、JMSConsumer オブジェクトを使用して、宛先に送信されたメッセージを受信します。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        destination - アクセスする Destination 
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーが原因でセッションが JMSConsumer の作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効な宛先が指定された場合。
      • createConsumer

        JMSConsumer createConsumer​(Destination destination,
                                   StringSE messageSelector)
        メッセージセレクターを使用して、指定した宛先の JMSConsumer を作成します。

        クライアントは、JMSConsumer オブジェクトを使用して、宛先に送信されたメッセージを受信します。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        destination - アクセスする Destination 
        messageSelector - メッセージセレクタ式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、JMSConsumer のメッセージセレクターがないことを示します。
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーが原因でセッションが JMSConsumer の作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効な宛先が指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
      • createConsumer

        JMSConsumer createConsumer​(Destination destination,
                                   StringSE messageSelector,
                                   boolean noLocal)
        メッセージセレクターと noLocal パラメーターを指定して、指定した宛先の JMSConsumer を作成します。

        クライアントは、JMSConsumer オブジェクトを使用して、宛先に送信されたメッセージを受信します。

        noLocal 引数は、宛先がトピックであり、JMSContext の接続がそのトピックへのメッセージの公開にも使用されている場合に使用されます。noLocal が true に設定されている場合、JMSConsumer は、自身の接続によってトピックに公開されたメッセージを受信しません。この引数のデフォルト値は false です。宛先がキューの場合、noLocal を true に設定した場合の影響は指定されていません。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        destination - アクセスする Destination 
        messageSelector - メッセージセレクタ式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、JMSConsumer のメッセージセレクターがないことを示します。
        noLocal - true で、宛先がトピックの場合、JMSConsumer は、独自の接続によってトピックに公開されたメッセージを受信しません。
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーが原因でセッションが JMSConsumer の作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効な宛先が指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
      • createQueue

        Queue createQueue​(StringSE queueName)
        指定されたプロバイダー固有のキュー名をカプセル化する Queue オブジェクトを作成します。

        アプリケーションでプロバイダー固有のキュー名を使用すると、アプリケーションが移植不可能になる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Queue オブジェクトを検索することをお勧めします。

        このメソッドは、キューの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理キューを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理キューを作成する方法を提供しません。物理キューの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なキューの作成です。これは、createTemporaryQueue メソッドを使用して行われます。

        パラメーター:
        queueName - プロバイダー固有のキュー名
        戻り値:
        指定された名前をカプセル化する Queue オブジェクト
        例外:
        JMSRuntimeException - 内部エラーのために Queue オブジェクトを作成できない場合
      • createTopic

        Topic createTopic​(StringSE topicName)
        指定されたプロバイダー固有のトピック名をカプセル化する Topic オブジェクトを作成します。

        アプリケーションでプロバイダー固有のトピック名を使用すると、アプリケーションが移植できなくなる場合があります。ポータブルアプリケーションでは、このメソッドを使用せずに、JNDI を使用して管理上定義された Topic オブジェクトを検索することをお勧めします。

        このメソッドは、トピックの名前をカプセル化するオブジェクトを作成するだけであることに注意してください。Jakarta Messaging プロバイダーで物理トピックを作成しません。これは特定の Jakarta Messaging プロバイダーに固有であるため、Jakarta Messaging は物理トピックを作成する方法を提供しません。物理トピックの作成はプロバイダー固有であり、通常は管理者が実行する管理タスクですが、一部のプロバイダーは必要に応じて自動的に作成する場合があります。これに対する 1 つの例外は、一時的なトピックの作成です。これは、createTemporaryTopic メソッドを使用して行われます。

        パラメーター:
        topicName - プロバイダー固有のトピック名
        戻り値:
        指定された名前をカプセル化する Topic オブジェクト
        例外:
        JMSRuntimeException - 内部エラーのためにトピックオブジェクトを作成できない場合
      • createDurableConsumer

        JMSConsumer createDurableConsumer​(Topic topic,
                                          StringSE name)
        指定されたトピックに非共有の永続サブスクリプションを作成し(まだ存在しない場合)、その永続サブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしで noLocal 値が false の永続サブスクリプションを作成します。

        永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。

        永続サブスクリプションは、unsubscribe メソッドを使用して削除されるまでメッセージを蓄積し続けます。

        このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber MessageConsumerJMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal 値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの JMSConsumer

        非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSRuntimeException がスローされます。

        同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal 値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。

        共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSRuntimeException がスローされます。

        同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        パラメーター:
        topic - サブスクライブする非一時的な Topic 
        name - このサブスクリプションを識別するために使用される名前
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        IllegalStateRuntimeException - クライアント識別子が設定されていない場合
        JMSRuntimeException -
        • 内部エラーのためにセッションが非共有の永続サブスクリプションと JMSConsumer の作成に失敗した場合
        • 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
        • 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
        導入:
        JMS 2.0
      • createDurableConsumer

        JMSConsumer createDurableConsumer​(Topic topic,
                                          StringSE name,
                                          StringSE messageSelector,
                                          boolean noLocal)
        メッセージセレクターと noLocal パラメーターを指定して、指定されたトピック(まだ存在しない場合)に非共有の永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。

        永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。

        永続サブスクリプションは、unsubscribe メソッドを使用して削除されるまでメッセージを蓄積し続けます。

        このメソッドは、非共有の永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有解除されます。これは、サブスクリプション上に同時に存在できるアクティブな(つまり、クローズされていない)コンシューマーは 1 つだけであることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの TopicSubscriber MessageConsumerJMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント識別子を持つ非共有の永続サブスクリプションがすでに存在し、同じトピック、メッセージセレクター、noLocal 値が指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、このメソッドは既存の永続サブスクリプションの JMSConsumer

        非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、永続サブスクリプションですでにアクティブな(つまり、閉じられていない)コンシューマーが存在する場合、JMSRuntimeException がスローされます。

        同じ名前とクライアント ID を持つ非共有の永続サブスクリプションがすでに存在しているが、トピック、メッセージセレクター、noLocal 値が異なる場合、永続サブスクリプションでアクティブな(つまり閉じていない)コンシューマーがない場合、これはサブスクライブ解除と同じです。(削除)古いものを作成し、新しいものを作成します。

        noLocal が true に設定されている場合、この JMSContext の接続、同じクライアント ID を持つ他の接続を使用してトピックに公開されたメッセージは、永続サブスクリプションに追加されません。

        共有恒久サブスクリプションと非共有恒久サブスクリプションは、同じ名前とクライアント識別子を持つことはできません。同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合、JMSRuntimeException がスローされます。

        同じ名前と clientId を持つ永続サブスクリプションと共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        このメソッドは、コンシューマーを表すために TopicSubscriber ではなく MessageConsumer を返すことを除いて、対応する createDurableSubscriber メソッドと同じです。

        パラメーター:
        topic - サブスクライブする非一時的な Topic 
        name - このサブスクリプションを識別するために使用される名前
        messageSelector - メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。
        noLocal - true の場合、このセッションの接続、同じクライアント識別子を持つその他の接続を使用してトピックにパブリッシュされたメッセージは、永続サブスクリプションに追加されません。
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
        IllegalStateRuntimeException - クライアント識別子が設定されていない場合
        JMSRuntimeException -
        • 内部エラーのためにセッションが非共有の永続サブスクリプションと JMSConsumer の作成に失敗した場合
        • 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在し、すでにアクティブなコンシューマーがある場合
        • 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在する場合
        導入:
        JMS 2.0
      • createSharedDurableConsumer

        JMSConsumer createSharedDurableConsumer​(Topic topic,
                                                StringSE name)
        指定されたトピック(まだ存在しない場合)で共有永続サブスクリプションを作成し、メッセージセレクターを指定して、その永続サブスクリプションでコンシューマーを作成します。このメソッドは、メッセージセレクターなしで永続サブスクリプションを作成します。

        永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。

        永続サブスクリプションは、unsubscribe メソッドを使用して削除されるまでメッセージを蓄積し続けます。

        このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの  MessageConsumer または JMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント ID(設定されている場合)を持つ共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに JMSConsumer を作成します。

        共有永続サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在しているが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがない場合、これは次と同等です。古いものを購読解除(削除)して、新しいものを作成します。

        共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException は投げられます。

        共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSRuntimeException がスローされます。

        メッセージセレクターが指定されている場合、メッセージセレクター式に一致するプロパティを持つメッセージのみがサブスクリプションに追加されます。

        永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        topic - サブスクライブする非一時的な Topic 
        name - このサブスクリプションを識別するために使用される名前
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        JMSRuntimeException -
        • 内部エラーのためにセッションが共有永続サブスクリプションと MessageConsumer の作成に失敗した場合
        • 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在するが、トピックまたはメッセージセレクターが異なり、コンシューマーがすでにアクティブになっている場合
        • 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在する場合
        導入:
        JMS 2.0
      • createSharedDurableConsumer

        JMSConsumer createSharedDurableConsumer​(Topic topic,
                                                StringSE name,
                                                StringSE messageSelector)
        メッセージセレクターを指定して、指定されたトピック(まだ存在しない場合)に共有永続サブスクリプションを作成し、その永続サブスクリプションにコンシューマーを作成します。

        永続サブスクリプションは、アクティブなコンシューマーが関連付けられていないときにパブリッシュされたメッセージを含め、トピックでパブリッシュされたすべてのメッセージを受信する必要があるアプリケーションによって使用されます。Jakarta Messaging プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクリプションのコンシューマーに配信されて確認されるまで、または期限が切れるまで保持されるようにします。

        永続サブスクリプションは、unsubscribe メソッドを使用して削除されるまでメッセージを蓄積し続けます。

        このメソッドは、共有永続サブスクリプションでのみ使用できます。このメソッドを使用して作成された永続サブスクリプションは共有されます。これは、サブスクリプションに複数のアクティブな(つまり、クローズされていない)コンシューマーが同時に存在する可能性があることを意味します。ここでの「コンシューマー」という用語は、任意のクライアントの  MessageConsumer または JMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント識別子(設定されている場合)で共有永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存の共有永続サブスクリプションに JMSConsumer を作成します。

        同じ名前とクライアント識別子(設定されている場合)で共有永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、永続サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがない場合、これは同等です。古いものの購読を解除(削除)し、新しいものを作成します。

        共有恒久サブスクリプションが同じ名前とクライアント識別子(設定されている場合)ですでに存在し、別のトピックまたはメッセージセレクターが指定されていて、恒久サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException は投げられます。

        共有永続サブスクリプションと非共有永続サブスクリプションは、同じ名前とクライアント識別子(設定されている場合)を持たない場合があります。非共有の永続サブスクリプションが同じ名前とクライアント ID(設定されている場合)ですでに存在する場合、JMSRuntimeException がスローされます。

        永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        topic - サブスクライブする非一時的な Topic 
        name - このサブスクリプションを識別するために使用される名前
        messageSelector - メッセージセレクター式に一致するプロパティを持つメッセージのみが永続サブスクリプションに追加されます。null または空の文字列の値は、永続サブスクリプションにメッセージセレクタがないことを示します。
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
        JMSRuntimeException -
        • 内部エラーのためにセッションが共有永続サブスクリプションと JMSConsumer の作成に失敗した場合
        • 同じ名前とクライアント識別子を持つ共有永続サブスクリプションがすでに存在するが、トピックまたはメッセージセレクターが異なり、コンシューマーがすでにアクティブになっている場合
        • 非共有の永続サブスクリプションが同じ名前とクライアント識別子ですでに存在する場合
        導入:
        JMS 2.0
      • createSharedConsumer

        JMSConsumer createSharedConsumer​(Topic topic,
                                         StringSE sharedSubscriptionName)
        指定されたトピックに指定された名前で共有非永続サブスクリプションを作成し(まだ存在しない場合)、そのサブスクリプションにコンシューマーを作成します。このメソッドは、メッセージセレクターなしで非永続サブスクリプションを作成します。

        同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに JMSConsumer を作成します。

        非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer または  JMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント識別子(設定されている場合)で共有された非永続サブスクリプションがすでに存在するが、異なるトピックまたはメッセージセレクター値が指定されており、サブスクリプションですでにアクティブな(つまり閉じられていない)コンシューマーがある場合、JMSRuntimeException がスローされます。

        永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        topic - サブスクライブする Topic 
        sharedSubscriptionName - 共有の非永続サブスクリプションを識別するために使用される名前
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        JMSRuntimeException - 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと JMSContext の作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
      • createSharedConsumer

        JMSConsumer createSharedConsumer​(Topic topic,
                                         StringSE sharedSubscriptionName,
                                         StringSE messageSelector)
        メッセージセレクターを指定して、指定されたトピック(指定されていない場合)に指定された名前で共有の非永続サブスクリプションを作成し、そのサブスクリプションにコンシューマーを作成します。

        同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在し、同じトピックとメッセージセレクターが指定されている場合、このメソッドは既存のサブスクリプションに JMSConsumer を作成します。

        非永続的な共有サブスクリプションは、複数のコンシューマー間でトピックサブスクリプションからメッセージを受信する作業を共有できる必要があるクライアントによって使用されます。非永続的な共有サブスクリプションには複数のコンシューマーが存在する可能性があります。サブスクリプションからの各メッセージは、そのサブスクリプションの 1 つのコンシューマーにのみ配信されます。そのようなサブスクリプションは永続化されておらず、コンシューマーがいない場合は(サブスクリプションに関連付けられた未配信メッセージとともに)削除されます。ここでの「コンシューマー」という用語は、任意のクライアントの MessageConsumer または  JMSConsumer オブジェクトを意味します。

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

        同じ名前とクライアント識別子(設定されている場合)を持つ共有の非永続サブスクリプションがすでに存在するが、別のトピックまたはメッセージセレクターが指定されており、サブスクリプションですでにアクティブな(つまり閉じていない)コンシューマーがある場合、JMSRuntimeException 投げられます。

        永続サブスクリプションと、同じ名前と clientId (未設定の場合もあります) を持つ共有非永続サブスクリプションには制限はありません。このようなサブスクリプションは完全に別々になります。

        autoStart プロパティが setAutoStart(boolean) で false に設定されていない限り、コンシューマーの作成時に自動的に行われるため、明示的に start() メソッドを呼び出す必要はありません。

        パラメーター:
        topic - サブスクライブする Topic 
        sharedSubscriptionName - 共有の非永続サブスクリプションを識別するために使用される名前
        messageSelector - メッセージセレクター式に一致するプロパティを持つメッセージのみが、共有の非永続サブスクリプションに追加されます。null または空の文字列の値は、共有の非永続サブスクリプションにメッセージセレクターがないことを示します。
        戻り値:
        作成された JMSConsumer オブジェクト。
        例外:
        JMSRuntimeException - 何らかの内部エラーのためにセッションが共有の非永続サブスクリプションと JMSConsumer の作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効なトピックが指定された場合。
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
      • createBrowser

        QueueBrowser createBrowser​(Queue queue)
        QueueBrowser オブジェクトを作成して、指定されたキューのメッセージを確認します。
        パラメーター:
        queue - アクセスする queue 
        戻り値:
        作成された QueueBrowser オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのためにセッションがブラウザーの作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効な宛先が指定された場合
      • createBrowser

        QueueBrowser createBrowser​(Queue queue,
                                   StringSE messageSelector)
        QueueBrowser オブジェクトを作成して、メッセージセレクターを使用して、指定されたキューのメッセージを確認します。
        パラメーター:
        queue - アクセスする queue 
        messageSelector - メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。
        戻り値:
        作成された QueueBrowser オブジェクト。
        例外:
        JMSRuntimeException - 内部エラーのためにセッションがブラウザーの作成に失敗した場合。
        InvalidDestinationRuntimeException - 無効な宛先が指定された場合
        InvalidSelectorRuntimeException - メッセージセレクタが無効な場合。
      • createTemporaryQueue

        TemporaryQueue createTemporaryQueue()
        TemporaryQueue オブジェクトを作成します。以前に削除されない限り、その存続期間は JMSContext の Connection の存続期間になります。
        戻り値:
        一時的なキュー ID
        例外:
        JMSRuntimeException - 内部エラーのためにセッションが一時キューの作成に失敗した場合。
      • createTemporaryTopic

        TemporaryTopic createTemporaryTopic()
        TemporaryTopic オブジェクトを作成します。以前に削除されない限り、その存続期間は JMSContext の Connection の存続期間になります。
        戻り値:
        一時的なトピックのアイデンティティ
        例外:
        JMSRuntimeException - 内部エラーのためにセッションが一時トピックの作成に失敗した場合。
      • unsubscribe

        void unsubscribe​(StringSE name)
        クライアントによって作成された永続サブスクリプションを登録解除します。

        このメソッドは、プロバイダーによってサブスクライバーに代わって維持されている状態を削除します。

        永続サブスクリプションは、クライアントによって指定された名前と、設定されている場合はクライアント識別子によって識別されます。永続サブスクリプションの作成時にクライアント識別子が設定されていた場合、このメソッドを使用して永続サブスクリプションを削除するクライアントは、同じクライアント識別子を使用する必要があります。

        そのサブスクリプションにアクティブな(閉じられていない)コンシューマーがある間、または消費されたメッセージが保留中のトランザクションの一部であるか、セッションで確認されていないときに、クライアントが永続サブスクリプションを削除するのは誤りです。

        アクティブなコンシューマーが JMSConsumer で表されている場合、そのオブジェクトまたはオブジェクトの作成に使用された JMSContext のいずれかで close を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。

        アクティブなコンシューマーが JMSContext で setMessageListener を呼び出すことによって作成された場合、JMSContext で close を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。

        アクティブなコンシューマーが MessageConsumer または TopicSubscriber で表されている場合、そのオブジェクトまたはオブジェクトの作成に使用された Session または Connection で close を呼び出すと、コンシューマーが非アクティブになり、サブスクリプションを削除できるようになります。

        パラメーター:
        name - このサブスクリプションを識別するために使用される名前
        例外:
        JMSRuntimeException - 内部エラーのためにセッションが永続サブスクリプションへのサブスクライブに失敗した場合。
        InvalidDestinationRuntimeException - 無効なサブスクリプション名が指定された場合。
      • acknowledge

        void acknowledge()
        JMSContext のセッションによって消費されたすべてのメッセージを確認します。

        このメソッドは、セッションの確認応答モードが CLIENT_ACKNOWLEDGE の場合に使用します。セッションが処理されているか、確認モードが AUTO_ACKNOWLEDGE または DUPS_OK_ACKNOWLEDGE の場合、このメソッドを呼び出しても効果はありません。

        このメソッドは、Message の acknowledge メソッドと同じ動作をします。クライアントは、消費された各メッセージを個別に確認することも、アプリケーション定義のグループとしてメッセージを確認することを選択することもできます。どちらの場合も、これら 2 つの方法のどちらを使用しても違いはありません。

        受信したが確認応答されていないメッセージは、再配信される場合があります。

        JMSContext がコンテナー管理(注入)されている場合は、このメソッドを使用しないでください。これを行うと、IllegalStateRuntimeException がスローされます。

        例外:
        IllegalStateRuntimeException -
        • JMSContext が閉じている場合。
        • JMSContext がコンテナー管理されている場合 (注入された)
        JMSRuntimeException - 内部エラーが原因で Jakarta Messaging プロバイダーがメッセージの確認に失敗した場合
        関連事項:
        Session.CLIENT_ACKNOWLEDGE, Message.acknowledge()