アダプタ (CongaServletAdapter) を実装することにより,ログ出力,認証済かどうかのチェックなど「ビジネスロジックではないけど,共通的な機能」を提供することができます。
まずは,アダプタの機能と実装に関するイメージをつかんでもらうため,ここでは「例外発生時のログ出力」機能を実装する方法を例として説明します。
アダプタを使うために,開発者は以下の2つを行ないます。
アダプタを作成するには,CongaServletAdapter クラスを継承したクラスを作成し,必要なメソッドの実装を行ないます。
package test;
import nga.servlet.ServiceInfo;
import nga.servlet.spi.CongaServletAdapter;
public class ExceptionLogger extends CongaServletAdapter {
public void abort(ServiceInfo serviceInfo, Throwable exception) {
serviceInfo.getServlet().log("Error!", exception);
}
}
この例では,例外発生時のログ出力を行なうため,例外発生のタイミングで呼び出される abort メソッドをオーバーライドし,Servlet の log メソッドを呼び出しています。
メソッド引数として渡される ServiceInfo には CongaServlet インスタンス,設定ファイルのタグ情報,セッション等,CongaServlet の service メソッド実行時に利用できるあらゆる情報が格納されています。
実装したアダプタメソッドが CongaServlet 実行時に呼び出されるようにするためには,web.xml の init-param の中で,nga.servlet.adapter を定義します。
<init-param>
<param-name>nga.servlet.adapter</param-name>
<param-value>test.ExceptionLogger</param-value>
</init-param>
ちなみに,複数のアダプタクラスを呼び出したい場合は,"test.ExceptionLogger, test.InfoLogger" というように "," で区切って記述します。
アダプタのメソッドが呼び出されるのは以下のタイミングです。

詳細は,API リファレンスをご覧下さい。