GlassFish 内の org.apache.catalina.Valve インタフェースは、Tomcat に含まれるものとは異なります。
このインタフェースには、パイプラインの valve 呼び出しをより簡潔に行うための最適化が施されています(このため、サーブレットリクエストを処理する過程でスタックフレームが要求されます): GlassFish の Web コンテナは、一つの valve にパイプライン上の次の valve を呼び出させるかわりに一つの valve に対して一度に呼び出しをかけ、現在の valve 呼び出しの戻り値により、次の valve を起動するかどうかを決定します。
Tomcat の valve を GlasFish に適用するには、次のような変更が必要となります:
invoke() のシグネチャを void から int に変更する。
return;
を、以下のように置き換える。
return Valve.END_PIPELINE;
getNext().invoke(request, response);
の呼び出しを以下のように置き換え、
return Valve.INVOKE_NEXT;
以下のメソッドに続く全てのコード(削除されることになる valve のロジック)を移動する。
public void postInvoke(Request request, Response response)
throws IOException, ServletException;
英文 (翻訳したバージョン: 2)