Interface | Description |
---|---|
DataReader<TData> |
Handler が処理する入力データを外部から読み込むインタフェース。
データリーダは複数のリクエストスレッドから並行アクセスされ得るので、
各メソッドはスレッドセーフに実装されなければならない。 |
DataReaderFactory<TData> |
データリーダのファクトリクラスが実装するインスタンス。
|
ExceptionHandler |
エラー処理用のハンドラ。
|
Handler<TData,TResult> |
データプロセッサが実装するパイプライン処理において、
各ステージで行われる処理が実装するインターフェース。
|
HandlerWrapper<TData,TResult> |
Handler インターフェースを実装していない
一般のオブジェクトに対するラッパー。 |
InboundHandleable |
前処理実行可能なハンドラであるマーカインタフェース。
|
MethodBinder<TData,TResult> |
任意のオブジェクトに対して、メソッドレベルのディスパッチを行う
ハンドラを作成するインターフェース。
|
OutboundHandleable |
後処理実行可能なハンドラであるマーカインタフェース。
|
Request<TParam> |
リクエストを表すインタフェース。
|
Result |
ハンドラでの処理結果を表すインターフェース。
|
TransactionEventCallback<TData> |
トランザクション(コミット or ロールバック)毎に
呼び出されるコールバックメソッドを定義するインタフェース。
|
Class | Description |
---|---|
ExecutionContext |
一連のハンドラ実行において、共通して読み書きするデータを保持するクラス。
具体的には以下の情報を保持する。
ハンドラキュー
データリーダ もしくは データリーダファクトリ
ユーザセッションスコープ情報
リクエストスコープ情報
本クラスのセッションスコープはスレッドアンセーフである。
複数スレッドから使用する場合はセッションスコープにスレッドセーフなMap実装を設定すること。
|
HandlerQueueManager<TSelf> |
ハンドラキューとその上の各ハンドラを管理する機能を実装した抽象クラス。
|
Interceptor.Factory |
Interceptor アノテーションによるHandler.handle(Object, ExecutionContext)
へのインターセプトを実現するスタティックメソッドを保持するクラス。
次のコードにより、handler.handle() メソッド上に付与されている
Interceptor アノテーションを収集し、各インターセプタに対応した
リクエストハンドラでラップされたハンドラ(wrapped)が生成される。 |
Interceptor.Impl<TData,TResult,T extends java.lang.annotation.Annotation> |
Interceptor の処理内容を実装するクラスの抽象基底クラスとなるリクエストハンドラ。
各インターセプションが付与されたときに行われるインターセプト処理の内容は、
このクラスを継承して作成する。
各Interceptor の値に指定されるクラスは、このクラスのサブクラスであり、
インターセプトが行われると、そのサブクラスが実装するHandler.handle(Object, ExecutionContext) に処理が委譲される。
この際、ラップされる前のリクエストハンドラをInterceptor.Impl.getOriginalHandler() で取得できるので、
各インターセプタ固有の処理を以下の例のように実装することができる。 |
RequestHandlerEntry<TRequest extends Request<?>,TResult> |
各リクエストのリクエストパスの内容に応じ、内部に保持するハンドラに
処理を委譲するかどうかを判断するハンドラ。
このハンドラでは、その内部にあるハンドラに対する参照を保持し、
各リクエストに対し、そのハンドラを実行する条件をリクエストパスのパターンで指定する。
URIとリクエストパスのパターンの照合処理はRequestPathMappingHelperに委譲する。
|
RequestPathMatchingHelper |
リクエストパスとリクエストパスのパターンの照合を行うクラス。
|
Result.MultiStatus |
処理結果が複数のステータスを含んでいることを表す。
これは、バッチ処理やアップロード処理のように、
1つのリクエストに対して複数の処理が実行される場合に返される。
個々の処理結果には、エラー結果(4xx/5xx)が含まれうる。
|
Result.Success |
ハンドラの処理が正常終了したことを表す。
|
StandaloneExecutionContext |
standaloneで使用する
ExecutionContext の継承クラス。制約 セッションスコープがスレッドセーフである セッションスコープにnullを指定できない セッションストアが使用できない |
TransactionEventCallback.Provider<TData> |
トランザクションイベントの発行を行うハンドラが継承するサポートクラス。
|
Exception | Description |
---|---|
DataReader.NoMoreRecord |
これ以上読み取るデータが無いことを示す例外。
|
NoMoreHandlerException |
ハンドラーキュー上に処理を委譲するためのハンドラが存在しない場合に
送出される例外。
|
Result.ClientError |
サービス呼出側に起因すると思われる問題により、処理が継続できないことを示す例外。
問題解決には、呼び出し側による対処が必要となるので、エラーメッセージの
内容として、呼び出し側に要求する対処の内容を明記する必要がある。
|
Result.Error |
ハンドラの処理が異常終了したことを示す実行時例外。
本クラスの具象クラスは以下の3つに類別することができる。
|
Result.NotFound |
要求されたリソースが存在しないため、
処理を継続することができないことを示す例外。
|
TransactionAbnormalEnd | Deprecated |
Annotation Type | Description |
---|---|
Interceptor |
Handler.handle(Object, ExecutionContext) メソッドに対するインターセプタに付与する
メタアノテーション。
インターセプタを作成するには、このメタアノテーションを付与したアノテーションを作成し、
Interceptor の属性には、インターセプト処理を実装するクラスを指定する。
この実装クラスは、Interceptor.Impl を継承して作成する。
以下は、インターセプタ"@AroundAdvice"の実装例である。 |