7.4.12 QueueSession(Session)インタフェース
QueueSession(Session)インタフェースはアプリケーションが使用する論理的なコネクションハンドルです。
- 〈この項の構成〉
(1) メッセージオブジェクトの生成
メッセージオブジェクト(Message,BytesMessage,ObjectMessageまたはTextMessageオブジェクト)を生成します。
(2) キューセンダの生成
QueueSenderオブジェクトを生成します。QueueSenderオブジェクトを生成する際,メッセージのあて先をcreateSender()メソッドの引数に指定します。
(3) キューレシーバの生成
QueueReceiverオブジェクトを生成します。QueueReceiverオブジェクトを生成する際,メッセージセレクタを設定できます。
(4) キューブラウザの生成
QueueBrowserオブジェクトを生成します。QueueBrowserオブジェクトを生成する際,メッセージセレクタを設定できます。
(5) ローカルトランザクションのコミットとロールバック
キューセンダとキューレシーバにわたるローカルトランザクションの開始,コミットおよびロールバックを実行します。ローカルトランザクションについては,「2.6.6(1) ローカルトランザクションの利用」を参照してください。
(6) キューセッションのクローズ
QueueSessionオブジェクトをクローズできます。クローズによって,QueueSessionオブジェクトに関連づけられたすべてのQueueSender,QueueReceiverおよびQueueBrowserオブジェクトをクローズし,QueueSessionオブジェクトに関連づけられたすべてのリソースを解放します。
QueueSession(Session)インタフェースのメソッドは,複数スレッドからの同時発行をJMSで禁止されています。ただし,close()メソッドだけは複数スレッドから同時発行してパラレルに実行できます。また,クローズされたQueueSessionオブジェクトに関連するインタフェースのメソッドを実行するとIllegalStateExceptionが発生しますが,close()メソッドでは発生しません。
(7) 配送メッセージのリカバー
一度配送されたメッセージを再び配送できるようにします。recover()メソッドの動作については,「2.6.6(4) トランザクションとメッセージ受信」を参照してください。
(8) 形式
public interface Session extends java.lang.Runnable { public static final int AUTO_ACKNOWLEDGE; public static final int CLIENT_ACKNOWLEDGE; public static final int DUPS_OK_ACKNOWLEDGE; public void close() throws JMSException; public void commit() throws JMSException; public BytesMessage createBytesMessage() throws JMSException; public MapMessage createMapMessage() throws JMSException; public Message createMessage() throws JMSException; public ObjectMessage createObjectMessage() throws JMSException; public ObjectMessage createObjectMessage(java.io.Serializable object) throws JMSException; public StreamMessage createStreamMessage() throws JMSException; public TextMessage createTextMessage() throws JMSException; public TextMessage createTextMessage(java.lang.String text) throws JMSException; public MessageListener getMessageListener() throws JMSException; public boolean getTransacted() throws JMSException; public void recover() throws JMSException; public void rollback() throws JMSException; public void run(); public void setMessageListener(MessageListener listener) throws JMSException; } public interface QueueSession extends Session { public QueueBrowser createBrowser(Queue queue) throws JMSException; public QueueBrowser createBrowser(Queue queue, java.lang.String messageSelector) throws JMSException; public Queue createQueue(java.lang.String queueName) throws JMSException; public QueueReceiver createReceiver(Queue queue) throws JMSException; public QueueReceiver createReceiver(Queue queue, java.lang.String messageSelector) throws JMSException; public QueueSender createSender(Queue queue) throws JMSException; public TemporaryQueue createTemporaryQueue() throws JMSException; }
(9) フィールド
「(8) 形式」に記載した順序で各フィールドを説明します。
(a) AUTO_ACKNOWLEDGEフィールド
public static final int AUTO_ACKNOWLEDGE
このメッセージ承認モードでは,次に示す場合にセッションがJMSクライアントのメッセージ受信を自動的に確認応答します。
-
セッションがreceive()メソッドの発行からの復帰に成功した場合
-
メッセージを処理するためにセッションが発行したメッセージリスナが復帰に成功した場合
(10) メソッド
「(8) 形式」に記載した順序で各メソッドを説明します。
(a) closeメソッド
public void close() throws JMSException
セッションをクローズします。セッションには幾つかのリソースが割り当てられている場合があるため,リソースが不要になった場合はセッションをクローズしてください。メソッドを発行すると次に示すとおり動作します。
-
セッションのトランザクションはロールバックされます。
-
セッションに関連づけられているすべてのQueueSender,QueueReceiverおよびQueueBrowserオブジェクトがクローズされます。
-
メッセージ処理が適切な方法で終了されるまで,メソッドは復帰しません。
-
セッションのすべての未承認メッセージはQueueSession.recover()メソッドが正常終了したときと同じ状態になります。
なお,クローズされているセッションをクローズしても例外は発生しません。
複数スレッドから同時に発行できるメソッドは,QueueSessionインタフェースではこのメソッドだけです。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
JMSException
内部エラーのためにJMSプロバイダがセッションをクローズする処理に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(b) commitメソッド
public void commit() throws JMSException
トランザクションで実行されたメッセージをすべてコミットし,設定中のロックをすべて解放します。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
IllegalStateException
セッションのトランザクションが開始していない状態で,メソッドが発行されました。
トランザクションマネジャでのトランザクションが進行中(例えば,分散トランザクションがJTAによって制御されている)であるため,コミットに失敗しました。
トランザクションマネジャでのトランザクションがサスペンド中であるため,コミットに失敗しました。
セッションまたはコネクションがクローズしている状態で,メソッドが発行されました。
JMSException
内部エラーのためにJMSプロバイダがトランザクションのコミットに失敗しました。
TransactionRolledBackException
コミット時に内部エラーのためにトランザクションがロールバックされました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(c) createBytesMessageメソッド
public BytesMessage createBytesMessage() throws JMSException
BytesMessageオブジェクトを作成します。
-
引数
ありません。
-
戻り値
BytesMessageオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(d) createMapMessageメソッド
public MapMessage createMapMessage() throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,JMSExceptionが発生します。
-
引数
ありません。
-
戻り値
MapMessageオブジェクト。
-
例外
例外クラス
説明
JMSException
メソッドが未サポートであることを示します。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(e) createMessageメソッド
public Message createMessage() throws JMSException
Messageオブジェクトを作成します。
-
引数
ありません。
-
戻り値
Messageオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(f) createObjectMessageメソッド
public ObjectMessage createObjectMessage() throws JMSException
ObjectMessageオブジェクトを作成します。
-
引数
ありません。
-
戻り値
ObjectMessageオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(g) createObjectMessageメソッド
public ObjectMessage createObjectMessage(java.io.Serializable object) throws JMSException
ペイロードを設定済みのObjectMessageオブジェクトを,object引数を基に作成します。
-
引数
引数名
説明
object
メッセージの初期化に使用するオブジェクト
-
戻り値
ペイロードを設定済みのObjectMessageオブジェクトを,object引数を基に作成します。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(h) createStreamMessageメソッド
public StreamMessage createStreamMessage() throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,JMSExceptionが発生します。
-
引数
ありません。
-
戻り値
StreamMessageオブジェクト。
-
例外
例外クラス
説明
JMSException
メソッドが未サポートであることを示します。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(i) createTextMessageメソッド
public TextMessage createTextMessage() throws JMSException
TextMessageオブジェクトを作成します。
-
引数
ありません。
-
戻り値
TextMessageオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(j) createTextMessageメソッド
public TextMessage createTextMessage(java.lang.String text) throws JMSException
ペイロードを設定済みのTextMessageオブジェクトを,text引数を基に作成します。
-
引数
引数名
説明
text
メッセージの初期化に使用する文字列
-
戻り値
ペイロードを設定済みのTextMessageオブジェクトを,text引数を基に作成します。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(k) getMessageListenerメソッド
public MessageListener getMessageListener() throws JMSException
このメソッドは未サポートです。
メソッドを発行した場合,nullを返します。
-
引数
ありません。
-
戻り値
セッションに関連づけられたメッセージリスナ。
-
例外
ありません。
(l) getTransactedメソッド
public boolean getTransacted() throws JMSException
セッションがトランザクションモードであるかどうかを示します。
-
引数
ありません。
-
戻り値
セッションがトランザクションモードである場合はtrue,そうでない場合はfalseを返します。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがトランザクションモード値の取得に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(m) recoverメソッド
public void recover() throws JMSException
メソッドを発行すると次に示すとおり動作します。
-
メッセージ配送を停止します。
-
今までセッションを介して配送されたメッセージに再配送マークを付けて,再配送できるようにします。
-
すべての配送済みの未承認メッセージを含む配送シーケンスを再開します。ただし,元の配送順序と同じ順序でメッセージが再配送されることは保証しません。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
IllegalStateException
トランザクションマネジャでのトランザクションが開始しているセッションで,メソッドが発行されました。
トランザクションマネジャでのトランザクションが開始していることによって,メソッドが失敗しました。
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがメッセージ配送の停止および再開に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(n) rollbackメソッド
public void rollback() throws JMSException
トランザクションで実行されたメッセージをすべてロールバックし,設定中のロックをすべて解放します。
-
引数
ありません。
-
戻り値
ありません。
-
例外
例外クラス
説明
IllegalStateException
セッションのトランザクションが開始していない状態で,メソッドが発行されました。
トランザクションマネジャでのトランザクションが進行中(例えば,分散トランザクションがJTAによって制御されている)であるため,ロールバックに失敗しました。
トランザクションマネジャでのトランザクションがサスペンド中であるため,ロールバックに失敗しました。
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにJMSプロバイダがトランザクションのロールバックに失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(o) runメソッド
public void run()
このメソッドは未サポートです。
このメソッドを発行した場合,実質的な処理は行われません。
-
引数
ありません。
-
戻り値
ありません。
-
例外
ありません。
(p) setMessageListenerメソッド
public void setMessageListener(MessageListener listener) throws JMSException
このメソッドは未サポートです。
このメソッドで設定した値は実際には使用されません。
-
引数
引数名
説明
listener
セッションに関連づけるメッセージリスナ
-
戻り値
ありません。
-
例外
ありません。
(q) createBrowserメソッド
public QueueBrowser createBrowser(Queue queue) throws JMSException
QueueBrowserオブジェクトを作成して,指定されたキューのメッセージを調べます。
-
引数
引数名
説明
queue
アクセス対象のキュー
-
戻り値
QueueBrowserオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
InvalidDestinationException
無効なキューが指定されたためにQueueBrowserオブジェクトの生成に失敗しました。
JMSException
内部エラーのためにセッションがQueueBrowserオブジェクトの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(r) createBrowserメソッド
public QueueBrowser createBrowser(Queue queue, java.lang.String messageSelector) throws JMSException
QueueBrowserオブジェクトを作成し,メッセージセレクタを使用して指定されたキューのメッセージを調べます。
-
引数
引数名
説明
queue
アクセス対象のキュー
messageSelector
メッセージセレクタ構文
-
戻り値
QueueBrowserオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
InvalidDestinationException
無効なキューが指定されたためにQueueBrowserオブジェクトの生成に失敗しました。
InvalidSelectorException
無効なメッセージセレクタを設定しました。
JMSException
内部エラーのためにセッションがQueueBrowserオブジェクトの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(s) createQueueメソッド
public Queue createQueue(java.lang.String queueName) throws JMSException
キューの名前を指定して,キューの識別情報を作成します。
queueName引数にはhrmmkqueコマンドに指定したキュー名を指定します。
-
引数
引数名
説明
queueName
キューの名前
-
戻り値
指定された名前のQueueオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
JMSException
内部エラーのためにセッションがキューの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(t) createReceiverメソッド
public QueueReceiver createReceiver(Queue queue) throws JMSException
QueueReceiverオブジェクトを作成して,指定されたキューからメッセージを受信します。
-
引数
引数名
説明
queue
アクセス対象のキュー
-
戻り値
QueueReceiverオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
InvalidDestinationException
無効なキューが指定されたためにQueueReceiverオブジェクトの生成に失敗しました。
JMSException
内部エラーのためにセッションがQueueReceiverオブジェクトの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(u) createReceiverメソッド
public QueueReceiver createReceiver(Queue queue, java.lang.String messageSelector) throws JMSException
QueueReceiverオブジェクトを作成し,メッセージセレクタを使用して指定されたキューからメッセージを受信します。
-
引数
引数名
説明
queue
アクセス対象のキュー。
messageSelector
メッセージセレクタ。メッセージセレクタ構文に一致するプロパティを保持するメッセージだけが配送されます。
-
戻り値
QueueReceiverオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
InvalidDestinationException
無効なキューが指定されたためにQueueReceiverオブジェクトの生成に失敗しました。
InvalidSelectorException
無効なメッセージセレクタを設定しました。
JMSException
内部エラーのためにセッションがQueueReceiverオブジェクトの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(v) createSenderメソッド
public QueueSender createSender(Queue queue) throws JMSException
QueueSenderオブジェクトを作成して,指定されたキューにメッセージを送信します。
-
引数
引数名
説明
queue
アクセス対象のキュー
-
戻り値
QueueSenderオブジェクト。
-
例外
例外クラス
説明
IllegalStateException
セッションまたはコネクションがクローズしている状態で,メソッドを発行しました。
InvalidDestinationException
無効なキューが指定されたためにQueueSenderオブジェクトの生成に失敗しました。
JMSException
内部エラーのためにセッションがQueueSenderオブジェクトの作成に失敗しました。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。
(w) createTemporaryQueueメソッド
public TemporaryQueue createTemporaryQueue() throws JMSException
このメソッドは未サポートです。
このメソッドを発行した場合,JMSExceptionが発生します。
-
引数
ありません。
-
戻り値
TemporaryQueueオブジェクト。
-
例外
例外クラス
説明
JMSException
メソッドが未サポートであることを示します。
例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。