2012-03-21 2 views
0

私は私がこのように私のラッパーを定義し、この[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でプロパティを変更しようとしましたが、私はそれを修正する方法の他のアイデアを持っていない、どんな助けも感謝します。

+0

見る(http://www.theserverside.com/discussions/thread.tss?thread_id=29287#:

はで詳細を参照してください。 165503) –

+0

ええ、私はそれを試みたが動作していない、私はエラーページを追加し、何も...私は問題がWASでいくつかのデバッグでは、任意のフィルタが呼び出されていると思う...私は本当になぜ – DGomez

+0

問題は、WASが存在しないページにアクセスしようとすると404エラーがスローされたときにフィルタが呼び出されないが、URLが.doで終わるときにフィルタが呼び出されるということです。 ..、誰もがなぜこのbehaivourを持っているのか知っていますか? – DGomez

答えて

関連する問題