7.4.12 QueueSession(Session)インタフェース

QueueSession(Session)インタフェースはアプリケーションが使用する論理的なコネクションハンドルです。

<この項の構成>
(1) メッセージオブジェクトの生成
(2) キューセンダの生成
(3) キューレシーバの生成
(4) キューブラウザの生成
(5) ローカルトランザクションのコミットとロールバック
(6) キューセッションのクローズ
(7) 配送メッセージのリカバー
(8) 形式
(9) フィールド
(10) メソッド

(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クライアントのメッセージ受信を自動的に確認応答します。

(b) CLIENT_ACKNOWLEDGEフィールド

public static final int CLIENT_ACKNOWLEDGE

このメッセージ承認モードでは,JMSクライアントがメッセージのacknowledge()メソッドを発行して処理済みのメッセージを確認応答します。

(c) DUPS_OK_ACKNOWLEDGEフィールド

public static final int DUPS_OK_ACKNOWLEDGE

このメッセージ承認モードはAUTO_ACKNOWLEDGEと同じ動作です。

(10) メソッド

「(8) 形式」に記載した順序で各メソッドを説明します。

(a) closeメソッド

public void close() throws JMSException

セッションをクローズします。セッションには幾つかのリソースが割り当てられている場合があるため,リソースが不要になった場合はセッションをクローズしてください。メソッドを発行すると次に示すとおり動作します。

なお,クローズされているセッションをクローズしても例外は発生しません。

複数スレッドから同時に発行できるメソッドは,QueueSessionインタフェースではこのメソッドだけです。

(b) commitメソッド

public void commit() throws JMSException

トランザクションで実行されたメッセージをすべてコミットし,設定中のロックをすべて解放します。

(c) createBytesMessageメソッド

public BytesMessage createBytesMessage() throws JMSException

BytesMessageオブジェクトを作成します。

(d) createMapMessageメソッド

public MapMessage createMapMessage() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合,JMSExceptionが発生します。

(e) createMessageメソッド

public Message createMessage() throws JMSException

Messageオブジェクトを作成します。

(f) createObjectMessageメソッド

public ObjectMessage createObjectMessage() throws JMSException

ObjectMessageオブジェクトを作成します。

(g) createObjectMessageメソッド

public ObjectMessage createObjectMessage(java.io.Serializable object)
 throws JMSException

ペイロードを設定済みのObjectMessageオブジェクトを,object引数を基に作成します。

(h) createStreamMessageメソッド

public StreamMessage createStreamMessage() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合,JMSExceptionが発生します。

(i) createTextMessageメソッド

public TextMessage createTextMessage() throws JMSException

TextMessageオブジェクトを作成します。

(j) createTextMessageメソッド

public TextMessage createTextMessage(java.lang.String text)
 throws JMSException

ペイロードを設定済みのTextMessageオブジェクトを,text引数を基に作成します。

(k) getMessageListenerメソッド

public MessageListener getMessageListener() throws JMSException

このメソッドは未サポートです。

メソッドを発行した場合,nullを返します。

(l) getTransactedメソッド

public boolean getTransacted() throws JMSException

セッションがトランザクションモードであるかどうかを示します。

(m) recoverメソッド

public void recover() throws JMSException

メソッドを発行すると次に示すとおり動作します。

(n) rollbackメソッド

public void rollback() throws JMSException

トランザクションで実行されたメッセージをすべてロールバックし,設定中のロックをすべて解放します。

(o) runメソッド

public void run()

このメソッドは未サポートです。

このメソッドを発行した場合,実質的な処理は行われません。

(p) setMessageListenerメソッド

public void setMessageListener(MessageListener listener)
 throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

(q) createBrowserメソッド

public QueueBrowser createBrowser(Queue queue) throws JMSException

QueueBrowserオブジェクトを作成して,指定されたキューのメッセージを調べます。

(r) createBrowserメソッド

public QueueBrowser createBrowser(Queue queue,
 java.lang.String messageSelector) throws JMSException

QueueBrowserオブジェクトを作成し,メッセージセレクタを使用して指定されたキューのメッセージを調べます。

(s) createQueueメソッド

public Queue createQueue(java.lang.String queueName)
 throws JMSException

キューの名前を指定して,キューの識別情報を作成します。

queueName引数にはhrmmkqueコマンドに指定したキュー名を指定します。

(t) createReceiverメソッド

public QueueReceiver createReceiver(Queue queue) throws JMSException

QueueReceiverオブジェクトを作成して,指定されたキューからメッセージを受信します。

(u) createReceiverメソッド

public QueueReceiver createReceiver(Queue queue,
 java.lang.String messageSelector) throws JMSException

QueueReceiverオブジェクトを作成し,メッセージセレクタを使用して指定されたキューからメッセージを受信します。

(v) createSenderメソッド

public QueueSender createSender(Queue queue) throws JMSException

QueueSenderオブジェクトを作成して,指定されたキューにメッセージを送信します。

(w) createTemporaryQueueメソッド

public TemporaryQueue createTemporaryQueue() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合,JMSExceptionが発生します。