public abstract class MessagingAction extends DbAccessSupport implements Handler<RequestMessage,ResponseMessage>, TransactionEventCallback<RequestMessage>
TransactionEventCallback.Provider<TData>
REQUEST_DATA_REQUEST_SCOPE_KEY
Constructor and Description |
---|
MessagingAction()
MessagingActionオブジェクトを生成する。
|
Modifier and Type | Method and Description |
---|---|
ResponseMessage |
handle(RequestMessage req,
ExecutionContext ctx)
入力データに対する処理を実行する。
|
protected ResponseMessage |
onError(java.lang.Throwable e,
RequestMessage request,
ExecutionContext context)
業務トランザクションが異常終了した場合の処理を実行する。
本メソッドは、業務トランザクションがロールバックされると起動される。
任意のエラー応答電文(
ResponseMessage )を返却したい場合は、本メソッドをオーバーライドすること。
デフォルト実装ではなにもしない。
注意:
以下のケースでは業務アクションへのディスパッチが行われる前にエラーが
発生するため、エラー応答電文の内容を制御することはできない。
フレームワーク制御ヘッダの形式不正
MOMミドルウェアのレイヤーで発生したエラー (JMSException等)
|
protected abstract ResponseMessage |
onReceive(RequestMessage request,
ExecutionContext context)
要求電文毎にフレームワークから起動され、要求電文の内容をもとに業務処理を実行する。
|
void |
transactionAbnormalEnd(java.lang.Throwable e,
RequestMessage data,
ExecutionContext ctx)
入力データに対する処理で異常が発生した場合に呼ばれる。
|
java.lang.Class<TransactionManagementHandler> |
transactionCallBackWatchType()
このクラスでは、
TransactionManagementHandler 上のトランザクションを監視する。 |
void |
transactionNormalEnd(RequestMessage data,
ExecutionContext ctx)
入力データに対する処理が正常に処理された場合に呼ばれる。
|
protected boolean |
usesAutoRead()
電文のメッセージボディの内容をデフォルトのフォーマッタを使用して
自動的に読み込むかどうかを指定する。
一般に使用される電文は
(ヘッダーレコード) + (業務レコード)
の2レイアウトで構成されることが多い。
そのようなケースでは本機能を有効にすることにより、
業務処理に制御が移った時点で、業務データ部の解析が全て完了した状態となり、
業務側で電文のレイアウトを意識した処理を実装する必要が無くなる。
(このオプションはデフォルトで有効となっている。)
業務データ部が複数のレコードによって構成されている場合や、
単一のフォーマット定義ファイルで定義できない場合、さらには、電文レイアウトが
動的に変更されるといったケースでは、本メソッドをオーバーライドしfalseを返すことで、
業務データ部の読み込みを業務ロジック側で制御することができる。
|
countByParameterizedSql, countByStatementSql, getParameterizedSqlStatement, getParameterizedSqlStatement, getSqlCStatement, getSqlPStatement, search
@Published public MessagingAction()
@Published protected abstract ResponseMessage onReceive(RequestMessage request, ExecutionContext context)
request
- 要求電文オブジェクトcontext
- 実行コンテキスト@Published protected ResponseMessage onError(java.lang.Throwable e, RequestMessage request, ExecutionContext context)
ResponseMessage
)を返却したい場合は、本メソッドをオーバーライドすること。
デフォルト実装ではなにもしない。
注意:
以下のケースでは業務アクションへのディスパッチが行われる前にエラーが
発生するため、エラー応答電文の内容を制御することはできない。
e
- 発生したエラーオブジェクトrequest
- 要求電文オブジェクトcontext
- 実行コンテキストnull
を返した場合はフレームワークが編集した電文が送信される。protected boolean usesAutoRead()
public ResponseMessage handle(RequestMessage req, ExecutionContext ctx)
usesAutoRead()
を呼ぶ。
その結果がfalseであればonReceive(RequestMessage, ExecutionContext)
に処理を移譲し、その結果を返す。
usesAutoRead()
がtrueを返す場合は、業務ロジックに入る前に業務データ部の
フォーマッタを使用して、メッセージボディから1レコード分のデータを読み込む。
業務データ部からレコードが読み込めない場合、または、1レコードの読み込みが完了
した時点でデータ終端に達しない場合はフォーマット不正のエラーを送出する。handle
in interface Handler<RequestMessage,ResponseMessage>
req
- 入力データctx
- 実行コンテキストpublic java.lang.Class<TransactionManagementHandler> transactionCallBackWatchType()
TransactionManagementHandler
上のトランザクションを監視する。public void transactionAbnormalEnd(java.lang.Throwable e, RequestMessage data, ExecutionContext ctx)
transactionAbnormalEnd
in interface TransactionEventCallback<RequestMessage>
e
- 発生したエラーdata
- 入力データctx
- 実行コンテキストpublic void transactionNormalEnd(RequestMessage data, ExecutionContext ctx)
transactionNormalEnd
in interface TransactionEventCallback<RequestMessage>
data
- 入力データctx
- 実行コンテキスト