Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus Reliable Messaging


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()メソッドの発行からの復帰に成功した場合

  • メッセージを処理するためにセッションが発行したメッセージリスナが復帰に成功した場合

(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

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

  • セッションのトランザクションはロールバックされます。

  • セッションに関連づけられているすべての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 障害コードの詳細」を参照してください。