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