Messageインタフェース(JMS)
Messageインタフェースは,すべてのJMSメッセージのルートインタフェースです。
すべてのメッセージのために使用されるJMSヘッダを定義します。ヘッダと本体から構成される小容量のエンティティとしてメッセージを扱います。メッセージ本体は,送られるアプリケーションデータを含んでいます。
形式
public interface Message { public static final int DEFAULT_DELIVERY_MODE; public static final int DEFAULT_PRIORITY; public static final long DEFAULT_TIME_TO_LIVE; public java.lang.String getJMSMessageID() throws JMSException; public void setJMSMessageID(java.lang.String id) throws JMSException; public long getJMSTimestamp() throws JMSException; public void setJMSTimestamp(long timestamp) throws JMSException; public byte[] getJMSCorrelationIDAsBytes() throws JMSException; public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException; public java.lang.String getJMSCorrelationID() throws JMSException; public void setJMSCorrelationID(java.lang.String correlationID) throws JMSException; public Destination getJMSReplyTo() throws JMSException; public void setJMSReplyTo(Destination replyTo) throws JMSException; public Destination getJMSDestination() throws JMSException; public void setJMSDestination(Destination destination) throws JMSException; public int getJMSDeliveryMode() throws JMSException; public void setJMSDeliveryMode(int deliveryMode) throws JMSException; public boolean getJMSRedelivered() throws JMSException; public void setJMSRedelivered(boolean redelivered) throws JMSException; public java.lang.String getJMSType() throws JMSException; public void setJMSType(java.lang.String type) throws JMSException; public long getJMSExpiration() throws JMSException; public void setJMSExpiration(long expiration) throws JMSException; public int getJMSPriority() throws JMSException; public void setJMSPriority(int priority) throws JMSException; public void clearProperties() throws JMSException; public boolean propertyExists(java.lang.String name) throws JMSException; public boolean getBooleanProperty(java.lang.String name) throws JMSException; public byte getByteProperty(java.lang.String name) throws JMSException; public short getShortProperty(java.lang.String name) throws JMSException; public int getIntProperty(java.lang.String name) throws JMSException; public long getLongProperty(java.lang.String name) throws JMSException; public float getFloatProperty(java.lang.String name) throws JMSException; public double getDoubleProperty(java.lang.String name) throws JMSException; public java.lang.String getStringProperty(java.lang.String name) throws JMSException; public java.lang.Object getObjectProperty(java.lang.String name) throws JMSException; public java.util.Enumeration getPropertyNames() throws JMSException; public void setBooleanProperty(java.lang.String name, boolean value) throws JMSException; public void setByteProperty(java.lang.String name, byte value) throws JMSException; public void setShortProperty(java.lang.String name, short value) throws JMSException; public void setIntProperty(java.lang.String name, int value) throws JMSException; public void setLongProperty(java.lang.String name, long value) throws JMSException; public void setFloatProperty(java.lang.String name, float value) throws JMSException; public void setDoubleProperty(java.lang.String name, double value) throws JMSException; public void setStringProperty(java.lang.String name, java.lang.String value) throws JMSException; public void setObjectProperty(java.lang.String name, java.lang.Object value) throws JMSException; public void acknowledge() throws JMSException; public void clearBody() throws JMSException; }
フィールド
● public static final int DEFAULT_DELIVERY_MODE
メッセージの永続性のデフォルトです。デフォルト値はDeliveryMode.PERSISTENT(永続)です。
● public static final int DEFAULT_PRIORITY
メッセージの優先度のデフォルトです。デフォルト値は4です。
● public static final long DEFAULT_TIME_TO_LIVE
メッセージの保持時間のデフォルトです。デフォルト値は0です。
メソッド
● public java.lang.String getJMSMessageID() throws JMSException
JMSMessageIDヘッダフィールドを取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:メッセージ識別子
● public void setJMSMessageID(java.lang.String id) throws JMSException
JMSMessageIDヘッダフィールドを設定します。JMSMessageIDヘッダフィールドは,送信時にTP1/Message Queueによって設定されるため,ユーザが設定しても無視されます。
受信したメッセージのJMSMessageIDヘッダフィールドを変更するときにこのメソッドを使用します。
JMSMessageIDの先頭には必ず「ID:」を付けてください。
- パラメタ
-
- id
-
メッセージ識別子を指定します。
- 例外
-
JMSException:エラーが発生しました。
● public long getJMSTimestamp() throws JMSException
JMSTimestampヘッダフィールドを取得します。
- 例外
-
JMSException:エラーが発生しました。
- 戻り値:ミリ秒で表される時刻
-
協定世界時の1970年1月1日午前0時から経過したミリ秒の値です。
● public void setJMSTimestamp(long timestamp) throws JMSException
JMSTimestampヘッダフィールドを設定します。TP1/Message Queueは,送信時にPutDate,PutTimeに対して時刻を設定するため,JMSTimestampヘッダフィールドにユーザが値を設定しても無視されます。
JMSTimestampは,TP1/Message Queueに対してメッセージのキューへの格納を依頼した時点の時刻です。メッセージが実際に転送先に送られる時刻ではありません。
受信したメッセージのJMSTimestampを変更するときにこのメソッドを使用します。
- パラメタ
-
- timestamp
-
ミリ秒で表される時刻を指定します。
協定世界時の1970年1月1日午前0時から経過したミリ秒の値を指定してください。
- 例外
-
JMSException:エラーが発生しました。
● public byte[] getJMSCorrelationIDAsBytes() throws JMSException
相関識別子をbyte型配列で取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:相関識別子
● public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException
相関識別子をbyte型配列で設定します。24バイトを超える部分は切り捨てられます。
- パラメタ
-
- correlationID
-
相関識別子を指定します。
- 例外
-
JMSException:エラーが発生しました。
● public java.lang.String getJMSCorrelationID() throws JMSException
相関識別子をString型で取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:相関識別子
● public void setJMSCorrelationID(java.lang.String correlationID) throws JMSException
相関識別子をString型で設定します。
相関識別子には次の値のどちらかを設定します。
-
プロバイダ固有のメッセージ識別子
先頭が「ID:」で,以降が48けたの16進数の文字列で指定します。内部で,長さ24バイトのbyte型配列(TP1/Message QueueのMQBYTE24型)に変換されます。
-
アプリケーション固有の文字列
先頭が「ID:」ではない文字列で指定します。内部でString型からMQBYTE24型に変換されます。このとき,24バイトを超える部分は切り捨てられます。
また,メッセージの送信を契機に,JMSCorrelationIDに格納されたアプリケーション固有の文字列は,先頭が「ID:」で以降が48けたの16進数の文字列に置き換えられます。
- パラメタ
-
- correlationID
-
相関識別子を指定します。
- 例外
-
JMSException:エラーが発生しました。
● public Destination getJMSReplyTo() throws JMSException
応答キューを取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:応答キュー
● public void setJMSReplyTo(Destination replyTo) throws JMSException
応答キューを設定します。
- パラメタ
-
- replyTo
-
応答キューを指定します。
- 例外
-
JMSException:エラーが発生しました。
● public Destination getJMSDestination() throws JMSException
宛先キューを取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:宛先キュー
● public void setJMSDestination(Destination destination) throws JMSException
宛先キューを設定します。ただし,JMSDestinationヘッダフィールドに値を設定しても,送信時には無視されます。送信完了後,JMSDestinationヘッダフィールドには送信メソッドによって指定される宛先オブジェクトが格納されます。受信時は,JMSDestinationヘッダフィールドには,該当するメッセージが入っていたキューが設定されます。
- パラメタ
-
- destination
-
宛先キューを指定します。
- 例外
-
JMSException:エラーが発生しました。
● public int getJMSDeliveryMode() throws JMSException
メッセージの永続性を取得します。
- 例外
-
JMSException:エラーが発生しました。
- 戻り値
-
DeliveryMode.NON_PERSISTENT:非永続
DeliveryMode.PERSISTENT:永続
● public void setJMSDeliveryMode(int deliveryMode) throws JMSException
メッセージの永続性を設定します。ただし,JMSDeliveryModeヘッダフィールドに値を設定しても,送信時には無視されます。メッセージの永続性はQueueSenderインタフェースで設定します。
- パラメタ
-
- deliveryMode
-
メッセージの永続性を次の値で指定します。
DeliveryMode.NON_PERSISTENT:非永続
DeliveryMode.PERSISTENT:永続
- 例外
-
JMSException:エラーが発生しました。
● public boolean getJMSRedelivered() throws JMSException
このメッセージが再送されているかどうかを取得します。
- 例外
-
JMSException:エラーが発生しました。
- 戻り値
-
false:MQMD構造体のBackoutCountフィールドの値が0
true:MQMD構造体のBackoutCountフィールドの値が1以上
● public void setJMSRedelivered(boolean redelivered) throws JMSException
再送のフラグを設定します。ただし,JMSRedeliveredヘッダフィールドに値を設定しても,送信時には無視されます。
- パラメタ
-
- redelivered
-
再送のフラグを指定します。
- 例外
-
JMSException:エラーが発生しました。
● public java.lang.String getJMSType() throws JMSException
TP1/Message QueueはJMSTypeの値を送受信できないため,setJMSTypeメソッドで設定された値がそのまま返ります。
- 例外
-
JMSException:エラーが発生しました。
戻り値:JMSType文字列
● public void setJMSType(java.lang.String type) throws JMSException
JMSTypeヘッダフィールドを設定しますが,TP1/Message Queueのキューにはこの情報は記録されません。
- 例外
-
JMSException:エラーが発生しました。
● public long getJMSExpiration() throws JMSException
メッセージの満了時刻を取得します。
メッセージの満了時刻(JMSExpiration)は,メッセージの登録時刻にメッセージの保持時間(TimeToLive)を加算した時刻に相当します。
なお,メッセージの満了時刻(JMSExpiration)が0の場合,メッセージが満了しないことを意味します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:メッセージの満了時刻
● public void setJMSExpiration(long expiration) throws JMSException
メッセージの満了時刻を設定します。ただし,JMSExpirationヘッダフィールドに値を設定しても,送信時には無視されます。TimeToLive(メッセージの保持時間)はQueueSenderインタフェースで設定します。TimeToLiveに0を指定した場合,JMSExpirationヘッダフィールドは0に設定され,メッセージが満了しないことを示します。
- パラメタ
-
- expiration
-
メッセージの満了時刻(単位:ミリ秒)を指定します。0の場合,メッセージは満了しません。
- 例外
-
JMSException:エラーが発生しました。
● public int getJMSPriority() throws JMSException
メッセージの優先度を取得します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:メッセージの優先度
● public void setJMSPriority(int priority) throws JMSException
メッセージの優先度を設定します。ただし,JMSPriorityヘッダフィールドに値を設定しても,送信時には無視されます。メッセージの優先度はQueueSenderインタフェースで設定します。
- パラメタ
-
- priority
-
メッセージの優先度を指定します。
- 例外
-
JMSException:エラーが発生しました。
● public void clearProperties() throws JMSException
プロパティの値を初期化します。ヘッダや本体は削除されません。
- 例外
-
JMSException:エラーが発生しました。
● public boolean propertyExists(java.lang.String name) throws JMSException
プロパティ(名称:name)の値が存在するかどうかを調べます。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
- 戻り値
-
true:プロパティの値が存在します。
false:プロパティの値が存在しません。
● public boolean getBooleanProperty(java.lang.String name) throws JMSException
boolean型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public byte getByteProperty(java.lang.String name) throws JMSException
byte型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public short getShortProperty(java.lang.String name) throws JMSException
short型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public int getIntProperty(java.lang.String name) throws JMSException
int型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public long getLongProperty(java.lang.String name) throws JMSException
long型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public float getFloatProperty(java.lang.String name) throws JMSException
float型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public double getDoubleProperty(java.lang.String name) throws JMSException
double型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public java.lang.String getStringProperty(java.lang.String name) throws JMSException
String型のプロパティ(名称:name)の値を取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型変換が不正です。
戻り値:プロパティnameの値
● public java.lang.Object getObjectProperty(java.lang.String name) throws JMSException
プロパティ(名称:name)の値をプリミティブ型をラップするクラスのオブジェクトとして取得します。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- 例外
-
JMSException:エラーが発生しました。
戻り値:プロパティnameの値
● public java.util.Enumeration getPropertyNames() throws JMSException
すべてのプロパティの名称を取得します。ヘッダは返されません。
- 例外
-
JMSException:エラーが発生しました。
戻り値:プロパティの一覧
● public void setBooleanProperty(java.lang.String name, boolean value) throws JMSException
boolean型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setByteProperty(java.lang.String name, byte value) throws JMSException
byte型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setShortProperty(java.lang.String name, short value) throws JMSException
short型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setIntProperty(java.lang.String name, int value) throws JMSException
int型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setLongProperty(java.lang.String name, long value) throws JMSException
long型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setFloatProperty(java.lang.String name, float value) throws JMSException
float型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setDoubleProperty(java.lang.String name, double value) throws JMSException
double型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setStringProperty(java.lang.String name, java.lang.String value) throws JMSException
String型のプロパティ(名称:name)の値を設定します。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void setObjectProperty(java.lang.String name, java.lang.Object value) throws JMSException
プロパティ(名称:name)の値を設定します。設定できる値の型は,プリミティブ型をラップするクラス(Byte,Integerなど),およびString型です。
nameに指定するプロパティ名が,「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には,プロパティの値はTP1/Message Queueのキューには格納されません。
- パラメタ
-
- name
-
プロパティの名称を指定します。
- value
-
プロパティの値を指定します。
- 例外
-
JMSException:エラーが発生しました。
MessageFormatException:プロパティ値の型が不正です。
MessageNotWriteableException:プロパティは読み込み専用です。
● public void acknowledge() throws JMSException
現時点から以前のすべてのメッセージを確認します。ただし,確認機能は提供しません。このメソッドを発行しても,即座にリターンします。
すべてのJMSメッセージは,クライアントが「受信側でメッセージは明示的に確認されなければならない」と指定しているときに使われる,acknowledgeメソッドをサポートしています。クライアントが自動確認機能を使用している場合,acknowledgeメソッドの呼び出しは無視されます。
このメソッドを発行した場合,受け取られたにもかかわらず確認されていないメッセージは,受信側に再送される場合があります。
- 例外
-
JMSException:エラーが発生しました。
IllegalStateException:すでにクローズされたセションでこのメソッドが発行されました。
● public void clearBody() throws JMSException
メッセージ本体を削除します。ヘッダやプロパティは削除されません。
メッセージ本体が読み込み専用の場合,メッセージ本体は削除されるとともに書き込み専用となります。
- 例外
-
JMSException:エラーが発生しました。