7.4.8 QueueConnection(Connection)インタフェース
QueueConnectionインタフェースは,アプリケーションがReliable Messagingにアクセスするために使用するアプリケーションレベルのハンドルを提供します。
QueueConnectionオブジェクトを取得するには,QueueConnectionFactory.createQueueConnection()メソッドを使用します。
- 〈この項の構成〉
(1) キューセッションの生成
createQueueSession()メソッドを発行することでQueueSessionオブジェクトを生成します。また,createQueueSession()メソッドのtransacted引数によってトランザクション設定を指定し,acknowledgeMode引数を指定することでメッセージ承認モードを指定できます。
各引数を指定したときのトランザクションとメッセージ送受信の関係については,「2.6.6 トランザクション制御」を参照してください。
(2) 配送の開始と停止
start()およびstop()メソッドを発行することで配送の開始と停止を制御できます。QueueConnectionオブジェクトは生成時に配送停止状態に設定されています。
(3) コネクションメタデータの取得
Reliable Messagingの製品名やバージョン,JMS APIのバージョンを保持するConnectionMetaDataオブジェクトを取得できます。
(4) キューコネクションのクローズ
QueueConnectionオブジェクトをクローズできます。クローズによって,QueueConnectionオブジェクトに関連づけられたすべてのセッションをクローズし,QueueConnectionオブジェクトに関連づけられたすべてのリソースを解放します。
(5) 形式
public interface Connection { public void close() throws JMSException; public java.lang.String getClientID() throws JMSException; public ExceptionListener getExceptionListener() throws JMSException; public ConnectionMetaData getMetaData() throws JMSException; public void setClientID(java.lang.String clientID) throws JMSException; public void setExceptionListener(ExceptionListener listener) throws JMSException; public void start() throws JMSException; public void stop() throws JMSException; } public interface QueueConnection extends javax.jms.Connection { public ConnectionConsumer createConnectionConsumer(Queue queue, java.lang.String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException; public QueueSession createQueueSession(boolean transacted, int acknowledgeMode) throws JMSException; }
(6) フィールド
ありません。
(7) メソッド
「(5) 形式」に記載した順序で各メソッドを説明します。
(a) closeメソッド
public void close() throws JMSException
コネクションをクローズします。メソッドを発行すると,コネクションに関連づけられているすべてのセッションがクローズされます。コネクションに代わってJavaVM外部リソースが割り当てられているので,これらのリソースが不要になった場合はコネクションをクローズしてください。メソッドを発行すると次に示すとおり動作します。
-
メッセージ処理が適切な方法で終了されるまで,メソッドは復帰しません。
-
コネクションに関連づけられているすべてのセッションのトランザクションはロールバックされます。
-
コネクションに関連づけられているすべてのセッションがクローズします。
-
コネクションに関連づけられているすべてのセッションでのすべての未承認メッセージは,QueueSession.recover()メソッドが正常終了した場合と同じ状態になります。
-
クローズされているコネクションをクローズしても例外は発生しません。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
JMSException
内部エラーのためにJMSプロバイダがコネクションのクローズに失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(b) getClientIDメソッド
public java.lang.String getClientID() throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,nullを返します。
-
引数
ありません。
-
戻り値
一意のJMSクライアント識別子。
-
例外
ありません。
(c) getExceptionListenerメソッド
public ExceptionListener getExceptionListener() throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,nullを返します。
-
引数
ありません。
-
戻り値
例外リスナ。
-
例外
ありません。
(d) getMetaDataメソッド
public ConnectionMetaData getMetaData() throws JMSException
コネクションのメタデータを返します。
-
引数
ありません。
-
戻り値
コネクションメタデータ。
-
例外
例外クラス
説明
JMSException
コネクションがクローズしている状態で,メソッドを発行しました。
内部エラーのためにJMSプロバイダがコネクション用のメタデータ取得に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(e) setClientIDメソッド
public void setClientID(java.lang.String clientID) throws JMSException
このメソッドは未サポートです。
このメソッドで設定した値は実際には使用されません。
-
引数
引数名
説明
java.lang.String
一意のJMSクライアント識別子
-
戻り値
ありません。
-
例外
ありません。
(f) setExceptionListenerメソッド
public void setExceptionListener(ExceptionListener listener) throws JMSException
このメソッドは未サポートです。
このメソッドで設定した値は実際には使用されません。
-
引数
引数名
説明
listener
例外リスナ
-
戻り値
ありません。
-
例外
ありません。
(g) startメソッド
public void start() throws JMSException
コネクションを開始することによって,コネクションに関連づけられているすべてのセッションで,メッセージの配送を開始(または再度開始)します。stop()メソッド発行後や生成後のコネクションは配送が禁止された状態であり,start()メソッドを発行するまでコネクションでは配送が開始されません。開始しているコネクションに対するstart()メソッドの発行は無視されます。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
JMSException
コネクションがクローズしている状態で,メソッドを発行しました。
内部エラーのためにJMSプロバイダがメッセージ配送の開始に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(h) stopメソッド
public void stop() throws JMSException
コネクションでのメッセージの配送を一時的に停止します。コネクションを停止すると,コネクションに関連づけられているすべてのセッションで配送が禁止されます。停止しているコネクションに対するstop()メソッドの発行は無視されます。
メッセージの配送が停止するまで,stop()メソッドの発行は復帰しません。これは,コネクションが再度開始されるまで,receive()メソッドの復帰を待つすべてのスレッドがメッセージを保持して復帰しないことを意味します。停止したコネクションのQueueReceiver.receive()メソッドのタイマは進行し続けるため,コネクション停止中にreceive()メソッドの処理がタイムアウトすることがあります。
なお,コネクションが停止している間もメッセージは送信できます。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
JMSException
コネクションがクローズしている状態で,メソッドを発行しました。
内部エラーのためにJMSプロバイダがメッセージ配送の停止に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(i) createConnectionConsumerメソッド
public ConnectionConsumer createConnectionConsumer(Queue queue, java.lang.String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,JMSExceptionが発生します。
-
引数
引数名
説明
queue
アクセス対象のキュー
messageSelector
メッセージセレクタ構文に一致するプロパティを保持するメッセージだけが配送されます。
sessionPool
接続コンシューマに関連づけるサーバセッションプール
maxMessages
一度にサーバセッションに割り当てできる最大メッセージ数
-
戻り値
コネクションコンシューマ。
-
例外
例外クラス
説明
JMSException
メソッドが未サポートであることを示します。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(j) createQueueSessionメソッド
public QueueSession createQueueSession(boolean transacted, int acknowledgeMode) throws JMSException
QueueSessionオブジェクトを生成します。
-
引数
-
戻り値
新しく作成されたキューセッション。
-
例外
例外クラス
説明
JMSException
コネクションがクローズしている状態で,メソッドを発行しました。
内部エラーまたはトランザクションおよびメッセージ承認モードのサポートが不足しているために,QueueConnectionオブジェクトがセッションの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。