アダプタによる機能拡張

アダプタ (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 リファレンスをご覧下さい。


TOP