TSelf
- 各具象クラスの型public abstract class InterSystemMessage<TSelf extends InterSystemMessage<?>>
extends java.lang.Object
プロトコルヘッダーはMOM間のメッセージ転送制御に関連する制御情報であり、 MOM側で自動的に解析される。 これらの情報の多くは、MOM製品に依存した仕様であるため、本フレームワークは プロトコルヘッダーに極力依存しない設計となっている。
本フレームワークが直接使用するプロトコルヘッダーは以下の5つのみである。プロトコルヘッダーを除いた電文のデータ部をメッセージボディと呼ぶ。 メッセージボディ部は、MOM側では単にバイナリデータとして扱うものとし、 解析は全てフレームワーク側で行う。
メッセージボディのフォーマットは nablarch.core.dataformat パッケージが提供する 機能を用いて定義する。解析後の電文はList-Map形式でアクセスすることが可能である。
メッセージボディ内は通常、以下に示すような階層構造をもち、その解析は各階層に 対応したデータリーダもしくはハンドラによって段階的に行われる。このクラスは各電文クラスに共通する機能やデータ構造を実装するものの、 直接インスタンスを作成することはできない。 これは、JMSのjavax.jms.Messageのような汎用メッセージオブジェクトを使いまわすのではなく、 その用途に応じて以下の4つの具象クラスを使いわける設計となっているためである。
Modifier and Type | Class and Description |
---|---|
static class |
InterSystemMessage.HeaderName
フレームワークで使用する既定ヘッダーのフィールド名
|
Constructor and Description |
---|
InterSystemMessage()
デフォルトコンストラクタ
|
InterSystemMessage(InterSystemMessage<?> orgMessage)
コピーコンストラクタ
|
Modifier and Type | Method and Description |
---|---|
abstract byte[] |
getBodyBytes()
メッセーボディのバイナリ表現を返す。
送信(仕向)電文の場合はデータレコードをレコードフォーマッタで直列化したものを返す。
受信(被仕向)電文の場合はパース前の送信電文の内容をそのまま返す。
|
java.lang.String |
getCorrelationId()
この電文に関連付けられているメッセージのメッセージIDを返す。
|
java.lang.String |
getDestination()
この電文の宛先キューの論理名を取得する。
MessagingContext.send(SendingMessage) メソッドでは、この戻り値に対応する
宛先に送信される。
|
DataRecordFormatter |
getFormatter()
メッセージボディのフォーマット定義を返す。
|
<T> T |
getHeader(java.lang.String headerName)
ヘッダーの値を返す。
|
java.util.Map<java.lang.String,java.lang.Object> |
getHeaderMap()
ヘッダーの一覧をMap形式で返す。
|
java.lang.String |
getMessageId()
この電文に割り当てられた識別子(メッセージID)を返す。
メッセージIDは電文送信時にMOMによって自動的に割り振られるため、
書式や一意性の範囲は製品依存となる。
また、送信前の電文にはnullが設定されている。
|
java.lang.Object |
getParam(java.lang.String name)
電文のデータ部の末尾レコードの中から指定されたフィールドの値を取得して返す。
主にシングルレコード形式の電文で使用することを想定している。
レコードが存在しない場合、もしくは、レコードに指定された項目が存在しない
場合はnullを返す。
。
|
java.util.Map<java.lang.String,java.lang.Object> |
getParamMap()
電文のデータ部の末尾レコードを返す。
主にシングルレコード形式の電文で使用することを想定している。
レコードが存在しない場合はnullを返す。
|
DataRecord |
getRecordOf(java.lang.String recordType)
指定された種別のレコードを返す。
複数存在する場合は、その先頭のレコードを返す。
存在しない場合はnullを返す。
|
java.util.List<DataRecord> |
getRecords()
メッセージボディに含まれる全レコードを返す。
|
java.util.List<DataRecord> |
getRecordsOf(java.lang.String recordType)
メッセージボディに含まれる指定された種別の全レコードを返す。
該当するレコードが存在しない場合は空のリストを返す。
|
java.lang.String |
getReplyTo()
応答宛先キューの論理名を返す。
|
TSelf |
setCorrelationId(java.lang.String messageId)
この電文に既存のメッセージのIDを関連付ける。
|
TSelf |
setDestination(java.lang.String destination)
送信宛先キューの論理名を設定する。
|
TSelf |
setFormatter(DataRecordFormatter formatter)
メッセージボディのフォーマット定義を設定する。
|
TSelf |
setHeader(java.lang.String name,
java.lang.Object value)
ヘッダーの値を設定する。
|
TSelf |
setHeaderMap(java.util.Map<java.lang.String,?> headers)
ヘッダーの一覧を設定する。
(既存のヘッダーは全て削除される。)
|
TSelf |
setMessageId(java.lang.String messageId)
メッセージIDを設定する。
メッセージIDはMOM側で採番される値であり、
このメソッドは単体テスト用に便宜的に容易されているものである。
|
TSelf |
setReplyTo(java.lang.String replyTo)
この電文に対する応答宛先となるキューの論理名を設定する。
|
public InterSystemMessage()
public InterSystemMessage(InterSystemMessage<?> orgMessage)
orgMessage
- コピー元電文@Published(tag="architect") public TSelf setFormatter(DataRecordFormatter formatter)
formatter
- フォーマット定義オブジェクトpublic DataRecordFormatter getFormatter()
@Published(tag="architect") public DataRecord getRecordOf(java.lang.String recordType)
recordType
- レコード名@Published(tag="architect") public java.util.List<DataRecord> getRecords()
@Published(tag="architect") public java.util.List<DataRecord> getRecordsOf(java.lang.String recordType)
recordType
- レコード種別@Published(tag="architect") public java.util.Map<java.lang.String,java.lang.Object> getParamMap()
@Published(tag="architect") public java.lang.Object getParam(java.lang.String name)
name
- 取得するフィールドの名称public abstract byte[] getBodyBytes()
@Published(tag="architect") public java.util.Map<java.lang.String,java.lang.Object> getHeaderMap()
public <T> T getHeader(java.lang.String headerName)
T
- 期待するヘッダの型headerName
- 値を取得するヘッダーの名前public TSelf setHeader(java.lang.String name, java.lang.Object value)
name
- 値を設定するヘッダーの名前value
- ヘッダーの値public TSelf setHeaderMap(java.util.Map<java.lang.String,?> headers)
headers
- ヘッダーの一覧@Published(tag="architect") public java.lang.String getMessageId()
@Published(tag="architect") public TSelf setMessageId(java.lang.String messageId)
messageId
- メッセージIDとして指定する文字列@Published(tag="architect") public java.lang.String getDestination()
@Published(tag="architect") public TSelf setDestination(java.lang.String destination)
destination
- 応答宛先キューの論理名@Published(tag="architect") public java.lang.String getCorrelationId()
@Published(tag="architect") public TSelf setCorrelationId(java.lang.String messageId)
messageId
- 関連付けるメッセージのID@Published(tag="architect") public java.lang.String getReplyTo()
@Published(tag="architect") public TSelf setReplyTo(java.lang.String replyTo)
replyTo
- 応答宛先キューの論理名