私は私がこのように私のラッパーを定義し、この[Q]エラー404キャッチする方法:SRVE0190E
public class StatusValidationFilter implements Filter
{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse,
FilterChain filterchain) throws IOException, ServletException
{
HttpServletResponse response = (HttpServletResponse)servletresponse;
if (!(response instanceof StatusExposingServletResponse))
{
response = new StatusExposingServletResponse(response);
}
filterchain.doFilter(servletrequest, response);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
ように私のフィルタを定義し、web.xmlで定義されたフィルタを使用して404エラーを捕獲しようとしているが:
public class StatusExposingServletResponse extends HttpServletResponseWrapper
{
public StatusExposingServletResponse(HttpServletResponse response) {
super(response);
}
public void sendError(int sc) throws IOException {
if(sc == HttpServletResponse.SC_NOT_FOUND)
{
throw new RuntimeException();
}
super.sendError(sc);
}
public void sendRedirect(String location) throws IOException {
super.sendRedirect(location);
}
}
[OK]を、その後、web.xmlにフィルタと、このようなマッピングを定義した:
<filter>
<filter-name>StatusValidationFilter</filter-name>
<filter-class>com.test.StatusValidationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StatusValidationFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
しかし、40をキャッチされていません4エラーは、URLがActionServletによってマップされたURLにマップされたときにフィルタを呼び出すだけです。つまり、.doで終了します。 WAS com.ibm.ws.webcontainer.invokeFiltersCompatibility = trueでプロパティを変更しようとしましたが、私はそれを修正する方法の他のアイデアを持っていない、どんな助けも感謝します。
見る(http://www.theserverside.com/discussions/thread.tss?thread_id=29287#:
はで詳細を参照してください。 165503) –ええ、私はそれを試みたが動作していない、私はエラーページを追加し、何も...私は問題がWASでいくつかのデバッグでは、任意のフィルタが呼び出されていると思う...私は本当になぜ – DGomez
問題は、WASが存在しないページにアクセスしようとすると404エラーがスローされたときにフィルタが呼び出されないが、URLが.doで終わるときにフィルタが呼び出されるということです。 ..、誰もがなぜこのbehaivourを持っているのか知っていますか? – DGomez