前処理用、後処理用のメソッドを作成しておくことにより、ビジネスクラスの呼び出し前後に実行させることができます。 前処理用、後処理用のメソッドは、ビジネスクラスごとに、または全ビジネスクラスで共通に使用されます。
前処理用のメソッドを作成する
前処理用のメソッドは次のように作成します。
ビジネスクラスにcom.fujitsu.uji.Preprocessorインターフェイスを実装します。GenericHandlerクラスを継承してビジネスクラスを作成している場合はこの作業は不要です。GenericHandlerクラスがPreprocessorを実装しているためです。
ビジネスクラスにpreprocessメソッドを作成し、そこに前処理を記述します。
アプリケーションがリクエストを受信すると、ビジネスクラスのメソッドが呼ばれますが、その前にそのビジネスクラスのpreprocessメソッドが呼ばれます。
preprocessメソッドの復帰値により、その後の処理を制御できます。
復帰値 | 意味 |
---|---|
Preprocessor.EVAL | ビジネスクラスの処理を継続します |
Preprocessor.SKIP_DISPATCH | ビジネスクラスのメソッドを呼び出さず、後処理のみ実行します |
Preprocessor.SKIP_ALL | ビジネスクラスの呼び出しも後処理の実行も行いません |
preprocessメソッドの記述例
import com.fujitsu.uji.Preprocessor; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public int preprocess(DispatchContext context) { // 前処理を記述します。 .... return Preprocessor.EVAL; } }
全ビジネスクラスに共通の前処理を作成する場合は、ビジネスクラスではなくセションクラスにPreprocessorインターフェイスを実装しpreprocessメソッドを作成します。 セションクラスのpreprocessメソッドは、どのビジネスクラスのメソッドが呼ばれる場合でも、その前に呼び出されます。
後処理用のメソッドを作成する
後処理用のメソッドは次のように作成します。
ビジネスクラスにcom.fujitsu.uji.Postprocessorインターフェイスを実装します。GenericHandlerクラスを継承してビジネスクラスを作成している場合はこの作業は不要です。GenericHandlerクラスがPostprocessorを実装しているためです。
ビジネスクラスにpostprocessメソッドを作成し、そこに後処理を記述します。
アプリケーションがリクエストを受信すると、ビジネスクラスのメソッドが呼ばれますが、正常に(例外をスローせずに)終了した場合、続いてそのビジネスクラスのpostprocessメソッドが呼ばれます。
preprocessメソッドの記述例
import com.fujitsu.uji.Postprocess; import com.fujitsu.uji.GenericHandler; public class SampleHandler extends GenericHandler { .... public Object postprocess(DispatchContext context, Object result) { // 後処理を記述します。 .... return result; } }
全ビジネスクラスに共通の後処理を作成する場合は、ビジネスクラスではなくセションクラスにPostprocessorインターフェイスを実装しpostprocessメソッドを作成します。 セションクラスのpostprocessメソッドは、どのビジネスクラスのメソッドが呼ばれる場合でも、そのあとに呼び出されます。
PostprocessorがhandleExceptionメソッドを持つため、以下の場合はhandleExceptionメソッドも実装する必要があります。handleExceptionメソッドについては“G.7.4 ビジネスクラスのメソッドで発生した例外をまとめて処理したい”を参照してください。
ビジネスクラスに後処理を作成する場合で、そのビジネスクラスがGenericHandlerを継承していない場合
セションクラスに後処理を作成する場合
関連項目
APIリファレンスのPreprocessor
APIリファレンスのPostprocessor