Interface | Description |
---|---|
DataReader<TData> |
Handler が処理する入力データを外部から読み込むインタフェース。
データリーダは複数のリクエストスレッドから並行アクセスされ得るので、
各メソッドはスレッドセーフに実装されなければならない。 |
DataReaderFactory<TData> |
データリーダのファクトリクラスが実装するインスタンス。
|
Handler<TData,TResult> |
データプロセッサが実装するパイプライン処理において、
各ステージで行われる処理が実装するインターフェース。
|
Request<TParam> |
リクエストを表すインタフェース。
|
Result |
ハンドラでの処理結果を表すインターフェース。
|
Class | Description |
---|---|
ExecutionContext |
一連のハンドラ実行において、共通して読み書きするデータを保持するクラス。
具体的には以下の情報を保持する。
ハンドラキュー
データリーダ もしくは データリーダファクトリ
ユーザセッションスコープ情報
リクエストスコープ情報
本クラスのセッションスコープはスレッドアンセーフである。
複数スレッドから使用する場合はセッションスコープにスレッドセーフなMap実装を設定すること。
|
Interceptor.Impl<TData,TResult,T> |
Interceptor の処理内容を実装するクラスの抽象基底クラスとなるリクエストハンドラ。
各インターセプションが付与されたときに行われるインターセプト処理の内容は、
このクラスを継承して作成する。
各Interceptor の値に指定されるクラスは、このクラスのサブクラスであり、
インターセプトが行われると、そのサブクラスが実装するHandler.handle(Object, ExecutionContext) に処理が委譲される。
この際、ラップされる前のリクエストハンドラをInterceptor.Impl.getOriginalHandler() で取得できるので、
各インターセプタ固有の処理を以下の例のように実装することができる。 |
Result.MultiStatus |
処理結果が複数のステータスを含んでいることを表す。
これは、バッチ処理やアップロード処理のように、
1つのリクエストに対して複数の処理が実行される場合に返される。
個々の処理結果には、エラー結果(4xx/5xx)が含まれうる。
|
Result.Success |
ハンドラの処理が正常終了したことを表す。
|
Exception | Description |
---|---|
DataReader.NoMoreRecord |
これ以上読み取るデータが無いことを示す例外。
|
NoMoreHandlerException |
ハンドラーキュー上に処理を委譲するためのハンドラが存在しない場合に
送出される例外。
|
Result.ClientError |
サービス呼出側に起因すると思われる問題により、処理が継続できないことを示す例外。
問題解決には、呼び出し側による対処が必要となるので、エラーメッセージの
内容として、呼び出し側に要求する対処の内容を明記する必要がある。
|
Result.Error |
ハンドラの処理が異常終了したことを示す実行時例外。
本クラスの具象クラスは以下の3つに類別することができる。
|
Result.NotFound |
要求されたリソースが存在しないため、
処理を継続することができないことを示す例外。
|
Annotation Type | Description |
---|---|
Interceptor |
Handler.handle(Object, ExecutionContext) メソッドに対するインターセプタに付与する
メタアノテーション。
インターセプタを作成するには、このメタアノテーションを付与したアノテーションを作成し、
Interceptor の属性には、インターセプト処理を実装するクラスを指定する。
この実装クラスは、Interceptor.Impl を継承して作成する。
以下は、インターセプタ"@AroundAdvice"の実装例である。 |