インターフェース Connection
- すべてのスーパーインターフェース:
AutoCloseableSE
- すべての既知のサブインターフェース:
QueueConnection
、TopicConnection
、XAConnection
、XAQueueConnection
、XATopicConnection
public interface Connection extends AutoCloseableSE
Connection
オブジェクトは、Jakarta Messaging プロバイダーへのクライアントのアクティブな接続です。通常、Java 仮想マシン(JVM)の外部にプロバイダーリソースを割り当てます。接続は同時使用をサポートします。
接続にはいくつかの目的があります。
- これは、Jakarta Messaging プロバイダーとのオープン接続をカプセル化します。これは通常、クライアントとサービスプロバイダーソフトウェア間の開いている TCP/IP ソケットを表します。
- その作成は、クライアント認証が行われる場所です。
- 一意のクライアント識別子を指定できます。
ConnectionMetaData
オブジェクトを提供します。- オプションの
ExceptionListener
オブジェクトをサポートします。
接続の作成には認証と通信の設定が含まれるため、接続は比較的重いオブジェクトです。ほとんどのクライアントは、単一の接続ですべてのメッセージングを実行します。他のより高度なアプリケーションは、いくつかの接続を使用する場合があります。Jakarta Messaging API は、複数の接続を使用する理由を設計していません。ただし、そのための運用上の理由がある場合があります。
Jakarta Messaging クライアントは通常、接続、1 つ以上のセッション、いくつかのメッセージプロデューサーとコンシューマーを作成します。接続が作成されると、停止モードになります。つまり、メッセージは配信されていません。
セットアップが完了するまで(つまり、すべてのメッセージコンシューマーが作成されるまで)、接続を停止モードのままにするのが一般的です。その時点で、クライアントは接続の
start
メソッドを呼び出し、メッセージが接続のコンシューマーに到着し始めます。このセットアップ規則により、クライアントがまだセットアップを行っている間に非同期メッセージが配信されることによるクライアントの混乱を最小限に抑えることができます。接続はすぐに開始でき、セットアップは後で行うことができます。これを行うクライアントは、セットアップの処理中に非同期メッセージ配信を処理できるように準備する必要があります。
メッセージプロデューサーは、接続が停止しているときにメッセージを送信できます。
- 導入:
- JMS 1.0
- バージョン:
- Jakarta Messaging 2.0
- 関連事項:
ConnectionFactory
,QueueConnection
,TopicConnection
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 void
close()
接続を閉じます。ConnectionConsumer
createConnectionConsumer(Destination destination, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages)
特定の宛先にこの接続(オプションの操作)の接続コンシューマーを作成します。ConnectionConsumer
createDurableConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages)
指定された名前の非共有永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。Session
createSession()
引数を指定せずにSession
オブジェクトを作成します。Session
createSession(boolean transacted, int acknowledgeMode)
transacted
およびacknowledgeMode
を指定して、Session
オブジェクトを作成します。Session
createSession(int sessionMode)
sessionMode
を指定して、Session
オブジェクトを作成します。ConnectionConsumer
createSharedConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages)
指定された名前の共有非永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。ConnectionConsumer
createSharedDurableConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages)
指定した名前の共有永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。StringSE
getClientID()
この接続のクライアント識別子を取得します。ExceptionListener
getExceptionListener()
この接続のExceptionListener
オブジェクトを取得します。ConnectionMetaData
getMetaData()
この接続のメタデータを取得します。void
setClientID(StringSE clientID)
この接続のクライアント識別子を設定します。void
setExceptionListener(ExceptionListener listener)
この接続の例外リスナーを設定します。void
start()
接続による受信メッセージの配信を開始(または再開)します。void
stop()
接続による受信メッセージの配信を一時的に停止します。
メソッドの詳細
createSession
Session createSession(boolean transacted, int acknowledgeMode) throws JMSException
transacted
およびacknowledgeMode
を指定して、Session
オブジェクトを作成します。このメソッドは、単一の引数を使用して同じ情報を指定するメソッド
createSession(int sessionMode)
と、Jakarta EE JTA トランザクションで使用するためのメソッドcreateSession()
に置き換えられました。アプリケーションは、このメソッドの代わりにこれらのメソッドの使用を検討する必要があります。transacted
およびacknowledgeMode
引数を設定する効果は、このメソッドが Java SE 環境で呼び出されるか、Jakarta EE アプリケーションクライアントコンテナーで呼び出されるか、Jakarta EE Web または EJB コンテナーで呼び出されるかによって異なります。このメソッドが Jakarta EE Web または EJB コンテナーで呼び出された場合、transacted} およびacknowledgeMode
引数を設定した場合の効果は、アクティブな JTA トランザクションが進行中かどうかによっても異なります。Java SE 環境または Jakarta EE アプリケーションクライアントコンテナー :
transacted
がtrue
に設定されている場合、セッションはローカルトランザクションを使用します。ローカルトランザクションは、セッションのcommit
またはrollback
メソッドを呼び出すことにより、後でコミットまたはロールバックできます。引数acknowledgeMode
は無視されます。transacted
がfalse
に設定されている場合、セッションはトランザクションされません。この場合、引数acknowledgeMode
を使用して、このセッションで受信したメッセージを確認する方法を指定します。許可される値はSession.CLIENT_ACKNOWLEDGE
、Session.AUTO_ACKNOWLEDGE
、Session.DUPS_OK_ACKNOWLEDGE
です。これらの確認応答モードの意味の定義については、以下のリンクを参照してください。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがある場合 :
- 引数
transacted
とacknowledgeMode
はどちらも無視されます。セッションは JTA トランザクションに参加し、セッションのcommit
またはrollback
メソッドを呼び出すことによってではなく、そのトランザクションがコミットまたはロールバックされるときにコミットまたはロールバックされます。両方の引数が無視されるため、開発者はこのメソッドの代わりに、引数のないcreateSession()
を使用することをお勧めします。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがない場合 :
transacted
が false に設定され、acknowledgeMode
がJMSContext.AUTO_ACKNOWLEDGE
またはSession.DUPS_OK_ACKNOWLEDGE
に設定されている場合、セッションは処理されず、メッセージはacknowledgeMode
の値に従って確認されます。transacted
が false に設定され、acknowledgeMode
がJMSContext.CLIENT_ACKNOWLEDGE
に設定されている場合、Jakarta Messaging プロバイダーは、指定されたパラメーターを無視して、代わりに非トランザクションの自動確認済みセッションを提供することをお勧めします。ただし、Jakarta Messaging プロバイダーは、代わりに非トランザクションセッションにクライアント確認を提供する場合があります。transacted
が true に設定されている場合、Jakarta Messaging プロバイダーは、指定されたパラメーターを無視して、代わりに非トランザクションの自動確認済みセッションを提供することをお勧めします。ただし、Jakarta Messaging プロバイダーは、代わりにローカルトランザクションセッションを提供できます。transacted
を false に設定してacknowledgeMode
をJMSContext.CLIENT_ACKNOWLEDGE
に設定したアプリケーションやtransacted
を true に設定したアプリケーションは移植性がない可能性があるため、transacted
を false に設定し、acknowledgeMode
をJMSContext.AUTO_ACKNOWLEDGE
またはSession.DUPS_OK_ACKNOWLEDGE
に設定することをお勧めします。
Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、接続ごとに複数のアクティブな(閉じられていない)
Session
オブジェクトを作成しようとしてはなりません。この接続に対してアクティブなSession
オブジェクトがすでに存在しているときに、このメソッドが Jakarta EE Web または EJB コンテナーで呼び出されると、JMSException
がスローされる場合があります。- パラメーター:
transacted
- この値が無視される上記の場合を除いて、セッションがローカルトランザクションを使用するかどうかを示します。acknowledgeMode
- トランザクションが false の場合、この値が無視される上記の場合を除いて、セッションによって受信されたメッセージがどのように確認されるかを示します。- 戻り値:
- 新しく作成されたセッション
- 例外:
JMSException
-Connection
オブジェクトが原因でセッションの作成に失敗した場合- いくつかの内部エラー
- 特定のトランザクションと確認応答モードのサポートの欠如、または
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されており、この接続に対してアクティブなセッションがすでに存在しているためです。
- 導入:
- JMS 1.1
- 関連事項:
Session.AUTO_ACKNOWLEDGE
,Session.CLIENT_ACKNOWLEDGE
,Session.DUPS_OK_ACKNOWLEDGE
,createSession(int)
,createSession()
createSession
Session createSession(int sessionMode) throws JMSException
sessionMode
を指定して、Session
オブジェクトを作成します。sessionMode
引数を設定する効果は、このメソッドが Java SE 環境で呼び出されるか、Jakarta EE アプリケーションクライアントコンテナーで呼び出されるか、Jakarta EE Web または EJB コンテナーで呼び出されるかによって異なります。このメソッドが Jakarta EE Web または EJB コンテナーで呼び出された場合、sessionMode
引数を設定する効果は、アクティブな JTA トランザクションが進行中かどうかによっても異なります。Java SE 環境または Jakarta EE アプリケーションクライアントコンテナー :
sessionMode
がSession.SESSION_TRANSACTED
に設定されている場合、セッションはローカルトランザクションを使用します。ローカルトランザクションは、セッションのcommit
またはrollback
メソッドを呼び出すことにより、後でコミットまたはロールバックできます。sessionMode
がSession.CLIENT_ACKNOWLEDGE
、Session.AUTO_ACKNOWLEDGE
、Session.DUPS_OK_ACKNOWLEDGE
のいずれかに設定されている場合。その後、セッションは非トランザクションになり、このセッションで受信されたメッセージはsessionMode
の値に従って確認されます。これらの確認応答モードの意味の定義については、以下のリンクを参照してください。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがある場合 :
- 引数
sessionMode
は無視されます。セッションは JTA トランザクションに参加し、セッションのcommit
またはrollback
メソッドを呼び出すことによってではなく、そのトランザクションがコミットまたはロールバックされるときにコミットまたはロールバックされます。引数は無視されるため、このメソッドの代わりに、引数のないcreateSession()
を使用することをお勧めします。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがない場合 :
sessionMode
がSession.AUTO_ACKNOWLEDGE
またはSession.DUPS_OK_ACKNOWLEDGE
に設定されている場合、セッションは処理されず、メッセージはsessionMode
の値に従って確認されます。sessionMode
がSession.CLIENT_ACKNOWLEDGE
に設定されている場合、Jakarta Messaging プロバイダーは、指定されたパラメーターを無視して、代わりに非トランザクションの自動確認済みセッションを提供することをお勧めします。ただし、JMS プロバイダーは、代わりに非トランザクションセッションにクライアント確認を提供する場合があります。sessionMode
がSession.SESSION_TRANSACTED
に設定されている場合、Jakarta Messaging プロバイダーは、指定されたパラメーターを無視し、代わりに非トランザクションの自動確認済みセッションを提供することをお勧めします。ただし、JMS プロバイダーは、代わりにローカルトランザクションセッションを提供する場合があります。Session.CLIENT_ACKNOWLEDGE
またはSession.SESSION_TRANSACTED
を使用するアプリケーションは移植できない場合があるため、アプリケーションでは値Session.AUTO_ACKNOWLEDGE
およびSession.DUPS_OK_ACKNOWLEDGE
のみを使用することをお勧めします。
Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、接続ごとに複数のアクティブな(閉じられていない)
Session
オブジェクトを作成しようとしてはなりません。この接続に対してアクティブなSession
オブジェクトがすでに存在しているときに、このメソッドが Jakarta EE Web または EJB コンテナーで呼び出されると、JMSException
がスローされる場合があります。- パラメーター:
sessionMode
- この値が無視される上記の場合を除いて、使用されるセッションモードを指定します。有効な値はJMSContext.SESSION_TRANSACTED
、JMSContext.CLIENT_ACKNOWLEDGE
、JMSContext.AUTO_ACKNOWLEDGE
、JMSContext.DUPS_OK_ACKNOWLEDGE
です。- 戻り値:
- 新しく作成されたセッション
- 例外:
JMSException
-Connection
オブジェクトが原因でセッションの作成に失敗した場合- いくつかの内部エラー
- 特定のトランザクションと確認応答モードのサポートの欠如、または
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されており、この接続に対してアクティブなセッションがすでに存在しているためです。
- 導入:
- JMS 2.0
- 関連事項:
Session.SESSION_TRANSACTED
,Session.AUTO_ACKNOWLEDGE
,Session.CLIENT_ACKNOWLEDGE
,Session.DUPS_OK_ACKNOWLEDGE
,createSession(boolean, int)
,createSession()
createSession
Session createSession() throws JMSException
引数を指定せずにSession
オブジェクトを作成します。作成されるセッションの動作は、このメソッドが Java SE 環境で呼び出されるか、Jakarta EE アプリケーションクライアントコンテナーで呼び出されるか、Jakarta EE Web または EJB コンテナーで呼び出されるかによって異なります。このメソッドが Jakarta EE Web または EJB コンテナーで呼び出される場合、セッションの動作は、進行中のアクティブな JTA トランザクションがあるかどうかによっても異なります。
Java SE 環境または Jakarta EE アプリケーションクライアントコンテナー :
- セッションは処理されず、受信メッセージは
Session.AUTO_ACKNOWLEDGE
の確認モードを使用して自動的に確認されます。この確認モードの意味の定義については、以下のリンクを参照してください。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがある場合 :
- セッションは JTA トランザクションに参加し、セッションの
commit
またはrollback
メソッドを呼び出すことによってではなく、そのトランザクションがコミットまたはロールバックされるときにコミットまたはロールバックされます。
Jakarta EE Web または EJB コンテナーで、進行中のアクティブな JTA トランザクションがない場合 :
- セッションは処理されず、受信メッセージは
Session.AUTO_ACKNOWLEDGE
の確認モードを使用して自動的に確認されます。この確認モードの意味の定義については、以下のリンクを参照してください。
Jakarta EE Web および EJB コンテナーで実行されているアプリケーションは、接続ごとに複数のアクティブな(閉じられていない)
Session
オブジェクトを作成しようとしてはなりません。この接続に対してアクティブなSession
オブジェクトがすでに存在しているときに、このメソッドが Jakarta EE Web または EJB コンテナーで呼び出されると、JMSException
がスローされる場合があります。- 戻り値:
- 新しく作成されたセッション
- 例外:
JMSException
-Connection
オブジェクトが原因でセッションの作成に失敗した場合- 内部エラーまたは
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されており、この接続に対してアクティブなセッションがすでに存在しているためです。
- 導入:
- JMS 2.0
- 関連事項:
Session.AUTO_ACKNOWLEDGE
,createSession(boolean, int)
,createSession(int)
- セッションは処理されず、受信メッセージは
getClientID
StringSE getClientID() throws JMSException
この接続のクライアント識別子を取得します。この値は、Jakarta Messaging プロバイダーに固有です。これは、管理者が
ConnectionFactory
オブジェクトで事前構成するか、setClientID
メソッドを呼び出してアプリケーションによって動的に割り当てられます。- 戻り値:
- 一意のクライアント識別子
- 例外:
JMSException
- 内部エラーのために、Jakarta Messaging プロバイダーがこの接続のクライアント ID を返せなかった場合。
setClientID
void setClientID(StringSE clientID) throws JMSException
この接続のクライアント識別子を設定します。Jakarta Messaging クライアントのクライアント ID を割り当てるための推奨される方法は、クライアント固有の
ConnectionFactory
オブジェクトで構成し、それが作成するConnection
オブジェクトに透過的に割り当てることです。あるいは、クライアントはプロバイダー固有の値を使用して接続のクライアント識別子を設定できます。接続のクライアント識別子を明示的に設定する機能は、管理上構成された識別子を上書きするメカニズムではありません。管理上指定された識別子が存在しない場合のために提供されています。存在する場合、それを設定して変更しようとすると、
IllegalStateException
をスローする必要があります。クライアントがクライアント識別子を明示的に設定する場合は、接続を作成した直後で、接続で他のアクションが実行される前に設定する必要があります。この後、クライアント識別子の設定はIllegalStateException
をスローするプログラミングエラーになります。クライアント識別子の目的は、接続とそのオブジェクトを、プロバイダーによってクライアントに代わって維持される状態に関連付けることです。Jakarta Messaging API によって識別される唯一のそのような状態は、永続的なサブスクリプションをサポートするために必要なものです。
このメソッドが呼び出されたときに同じ
clientID
との別の接続がすでに実行されている場合、Jakarta Messaging プロバイダーは重複する ID を検出してInvalidClientIDException
をスローする必要があります。このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
clientID
- 一意のクライアント識別子- 例外:
JMSException
- 次のいずれかの理由により、Jakarta Messaging プロバイダーが接続のクライアント ID の設定に失敗した場合:- 内部エラーが発生した、または
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
InvalidClientIDException
- Jakarta Messaging クライアントが無効または重複したクライアント ID を指定した場合。IllegalStateException
- Jakarta Messaging クライアントが接続のクライアント ID を間違った時間に設定しようとした場合、または管理上構成されている場合。
getMetaData
ConnectionMetaData getMetaData() throws JMSException
この接続のメタデータを取得します。- 戻り値:
- 接続メタデータ
- 例外:
JMSException
- Jakarta Messaging プロバイダーがこの接続の接続メタデータの取得に失敗した場合。- 関連事項:
ConnectionMetaData
getExceptionListener
ExceptionListener getExceptionListener() throws JMSException
この接続のExceptionListener
オブジェクトを取得します。すべてのConnection
にExceptionListener
が関連付けられているわけではありません。- 戻り値:
- この接続の
ExceptionListener
、または null。この接続に関連付けられているExceptionListener
がない場合。 - 例外:
JMSException
- Jakarta Messaging プロバイダーがこの接続のExceptionListener
の取得に失敗した場合。- 関連事項:
setExceptionListener(jakarta.jms.ExceptionListener)
setExceptionListener
void setExceptionListener(ExceptionListener listener) throws JMSException
この接続の例外リスナーを設定します。Jakarta Messaging プロバイダーは、接続に重大な問題を検出すると、接続の
ExceptionListener
が登録されているかどうかを通知します。これを行うには、リスナーのonException
メソッドを呼び出し、問題を説明するJMSException
オブジェクトを渡します。例外リスナーを使用すると、クライアントに問題を非同期的に通知できます。一部の接続はメッセージのみを消費するため、接続が失敗したことを知る方法が他にありません。
接続は、その
ExceptionListener
の実行を直列化します。Jakarta Messaging プロバイダーは、クライアントに通知する前に、接続の問題自体を解決する必要があります。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
listener
- 例外リスナー- 例外:
JMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由で例外リスナーの設定に失敗した場合:- 内部エラーが発生した、または
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
start
void start() throws JMSException
接続による受信メッセージの配信を開始(または再開)します。すでに開始されている接続でのstart
の呼び出しは無視されます。- 例外:
JMSException
- 内部エラーのために Jakarta Messaging プロバイダーがメッセージ配信の開始に失敗した場合。- 関連事項:
stop()
stop
void stop() throws JMSException
接続による受信メッセージの配信を一時的に停止します。接続のstart
メソッドを使用して配信を再開できます。接続が停止すると、すべての接続のメッセージコンシューマーへの配信が禁止されます。同期受信ブロックであり、メッセージはメッセージリスナーに配信されません。接続を停止しても、メッセージを送信する機能には影響しません。すでに停止している接続での
stop
の呼び出しは無視されます。stop
の呼び出しは、メッセージの配信が一時停止するまで戻りません。つまり、クライアントは、そのメッセージリスナーが呼び出されず、receive
呼び出しが戻るのを待っているすべての制御スレッドが、接続が再開されるまでメッセージを返さないという事実に依存できます。停止した接続の受信タイマーは進み続けるため、接続が停止している間は受信がタイムアウトする場合があります。stop
が呼び出されたときにメッセージリスナーが実行されている場合、stop
呼び出しは、すべてのリスナーが戻るまで待機してから戻る必要があります。これらのメッセージリスナーが完了する間、それらは利用可能な接続の完全なサービスを持っている必要があります。ただし、独自の接続でメッセージリスナーから
stop
メソッドが呼び出されると、失敗してjakarta.jms.IllegalStateException
がスローされるか、成功して接続が停止し、実行中の他のすべてのメッセージリスナーが戻るまでブロックされます。この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは自身の Connection のメッセージリスナーから
stop
を呼び出さないようにする必要があります。誤解を避けるために、
stop
が呼び出されたときにこの接続の例外リスナーが実行されている場合、stop
呼び出しが例外リスナーが戻るまで待機する必要はありません。このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- 例外:
IllegalStateException
- このメソッドは、独自の Connection 上の MessageListener によって呼び出されましたJMSException
- Jakarta Messaging プロバイダーが次のいずれかの理由でメッセージ配信の停止に失敗した場合:- 内部エラーが発生した、または
- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 関連事項:
start()
close
void close() throws JMSException
接続を閉じます。プロバイダーは通常、接続に代わって JVM の外部に重要なリソースを割り当てるため、クライアントはこれらのリソースが不要になったときに閉じる必要があります。これらのリソースを最終的に再利用するためにガベージコレクションに依存することは、十分なタイミングではない場合があります。
閉じられた接続のセッション、プロデューサー、コンシューマーを閉じる必要はありません。
接続を閉じると、すべての一時的な宛先が削除されます。
このメソッドが呼び出された場合、メッセージ処理が正常な方法でシャットダウンされるまで、メソッドは復帰しません。これは、実行されていた可能性のあるすべてのメッセージリスナーが返され、保留中のすべての受信が返されたことを意味します。
ただし、独自の接続でメッセージリスナーから close メソッドが呼び出されると、失敗して
jakarta.jms.IllegalStateException
がスローされるか、成功して接続が閉じられ、実行中の他のすべてのメッセージリスナーが返されるまでブロックされます。保留中のすべての受信呼び出しが完了しました。クローズが成功し、セッションの確認応答モードがAUTO_ACKNOWLEDGE
に設定されている場合、onMessage
呼び出しが完了すると、現在のメッセージは引き続き自動的に確認応答されます。この場合、2 つの代替動作が許可されているため、移植性がないため、アプリケーションは独自の接続でメッセージリスナーから close を呼び出すことを避ける必要があります。close は、接続のセッションのコンシューマーで保留中のすべてのメッセージ受信を終了します。receive は、クローズ時に使用可能なメッセージがあったかどうかに応じて、メッセージまたは null を返します。接続の
close
が呼び出されたときに、1 つ以上の接続のセッションのメッセージリスナーがメッセージを処理している場合、接続とそのセッションのすべての機能は、Jakarta Messaging プロバイダーに制御を返すまで、それらのリスナーが利用できるようにしておく必要があります。この Connection の不完全な非同期送信操作が完了し、 CompletionListener コールバックが返されるまで、このメソッドは返ってはなりません。エラーが発生しない限り、不完全な送信は正常に完了できるようにする必要があります。
誤解を避けるために、
close
が呼び出されたときにこの接続の例外リスナーが実行されている場合、close
呼び出しが例外リスナーが戻るまで待機する必要はありません。接続を閉じると、進行中のセッションのトランザクションがロールバックされます。セッションの作業が外部トランザクションマネージャーによって調整される場合、セッションの
commit
およびrollback
メソッドは使用されず、閉じられたセッションの作業の結果は、後でトランザクションマネージャーによって決定されます。接続を閉じても、クライアント確認済みセッションの確認は強制されません。CompletionListener コールバックメソッドは、独自の Connection で close を呼び出さないでください。これを行うと、 IllegalStateException がスローされます。
閉じた接続のセッションから受信したメッセージの
acknowledge
メソッドを呼び出すには、IllegalStateException
をスローする必要があります。閉じた接続を閉じても、例外をスローしてはなりません。- 次で指定:
- インターフェース
AutoCloseableSE
のclose
- 例外:
IllegalStateException
-- このメソッドは、 MessageListener によって独自の接続で呼び出されています。
- このメソッドは、独自の接続で CompletionListener コールバックメソッドによって呼び出されました。
JMSException
- 内部エラーが原因で Jakarta Messaging プロバイダーが接続を閉じることができない場合。例: リソースの解放またはソケット接続のクローズに失敗すると、この例外がスローされる可能性があります。
createConnectionConsumer
ConnectionConsumer createConnectionConsumer(Destination destination, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException
特定の宛先にこの接続(オプションの操作)の接続コンシューマーを作成します。これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
この方法は、Jakarta EE Web または Enterprise Bean アプリケーションでは使用しないでください。これを行うと、
JMSException
がスローされる可能性がありますが、これは保証されていません。- パラメーター:
destination
- アクセス先messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。sessionPool
- この接続コンシューマーに関連付けるサーバーセッションプールmaxMessages
- 一度にサーバーセッションに割り当てることができるメッセージの最大数- 戻り値:
- 接続コンシューマー
- 例外:
InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。JMSException
- 次のいずれかの理由でConnection
オブジェクトが接続コンシューマーの作成に失敗した場合:- 内部エラーが発生
sessionPool
およびmessageSelector
の無効な引数または- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 導入:
- JMS 1.1
- 関連事項:
ConnectionConsumer
createSharedConnectionConsumer
ConnectionConsumer createSharedConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException
指定された名前の共有非永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
topic
- アクセスするトピックsubscriptionName
- 共有の非永続サブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。sessionPool
- この接続コンシューマーに関連付けるサーバーセッションプールmaxMessages
- 一度にサーバーセッションに割り当てることができるメッセージの最大数- 戻り値:
- 接続コンシューマー
- 例外:
IllegalStateException
-QueueConnection
で呼び出された場合InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。JMSException
- 次のいずれかの理由でConnection
オブジェクトが接続コンシューマーの作成に失敗した場合:- 内部エラーが発生
sessionPool
およびmessageSelector
の無効な引数または- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 導入:
- JMS 2.0
- 関連事項:
ConnectionConsumer
createDurableConnectionConsumer
ConnectionConsumer createDurableConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException
指定された名前の非共有永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
topic
- アクセスするトピックsubscriptionName
- 非共有の永続サブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。sessionPool
- この永続的な接続コンシューマーに関連付けるサーバーセッションプールmaxMessages
- 一度にサーバーセッションに割り当てることができるメッセージの最大数- 戻り値:
- 耐久性のある接続コンシューマー
- 例外:
IllegalStateException
-QueueConnection
で呼び出された場合InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。JMSException
- 次のいずれかの理由でConnection
オブジェクトが接続コンシューマーの作成に失敗した場合:- 内部エラーが発生
sessionPool
およびmessageSelector
の無効な引数または- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 導入:
- JMS 1.1
- 関連事項:
ConnectionConsumer
createSharedDurableConnectionConsumer
ConnectionConsumer createSharedDurableConnectionConsumer(Topic topic, StringSE subscriptionName, StringSE messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException
指定した名前の共有永続サブスクリプションを使用して、特定のトピックでこの接続(オプションの操作)の接続コンシューマーを作成します。これは、通常の Jakarta Messaging クライアントでは使用されないエキスパート機能です。
このメソッドは、Jakarta EE Web または EJB アプリケーションでは使用しないでください。保証されていませんが、
JMSException
がスローされる可能性があります。- パラメーター:
topic
- アクセスするトピックsubscriptionName
- 共有永続サブスクリプションを識別するために使用される名前messageSelector
- メッセージセレクター式に一致するプロパティを持つメッセージのみが配信されます。null または空の文字列の値は、メッセージコンシューマーにメッセージセレクタがないことを示します。sessionPool
- この永続的な接続コンシューマーに関連付けるサーバーセッションプールmaxMessages
- 一度にサーバーセッションに割り当てることができるメッセージの最大数- 戻り値:
- 耐久性のある接続コンシューマー
- 例外:
IllegalStateException
-QueueConnection
で呼び出された場合InvalidDestinationException
- 無効な宛先が指定された場合。InvalidSelectorException
- メッセージセレクタが無効な場合。JMSException
- 次のいずれかの理由でConnection
オブジェクトが接続コンシューマーの作成に失敗した場合:- 内部エラーが発生
sessionPool
およびmessageSelector
の無効な引数または- このメソッドは Jakarta EE Web または EJB アプリケーションで呼び出されました (この場合、例外がスローされることは保証されていませんが)
- 導入:
- JMS 2.0
- 関連事項:
ConnectionConsumer