A redirect would change the status code returned to the user agent.  It does
not go through the filters because it is forwarded, and as such is part of
the same request, not a new request.


Tim

-----Original Message-----
From: MC Moisei [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, May 10, 2006 11:59 AM
To: users@tomcat.apache.org
Subject: Handling 404 thru web.xml

Hi,

Do you know of any issue involving error handling in tomcat (5.5.9) ?

Here's the deal. I defined in my web.xml the following entry

<error-page>
     <error-code>404</error-code>
    <location>/portal.do</location>
</error-page>

When I call, say portal1.do, a page that doesn't exists I get a forward to
the portal.do the thing with the forward is seems that it doesn't go thru
the application filters again. And why this is not a redirect ? The browser
address stays portal1.do instead of portal.do...

Here how the stack trace looks when the portal1.do is called ( this is
normal, check the second trace)


Thread [http-8585-Processor24] (Suspended)
        CustomServlet.service(ServletRequest, ServletResponse) line: 104
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 252
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        FilterSecurityInterceptor.invoke(FilterInvocation) line: 84
        SecurityEnforcementFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 182
        FilterToBeanProxy.doFilter(ServletRequest, ServletResponse,
FilterChain) 
line: 125
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 202
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        
CustomAuthenticationProcessingFilter(AbstractProcessingFilter).doFilter(Serv
letRequest, 
ServletResponse, FilterChain) line: 305
        FilterToBeanProxy.doFilter(ServletRequest, ServletResponse,
FilterChain) 
line: 125
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 202
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        HttpSessionContextIntegrationFilter.doFilter(ServletRequest, 
ServletResponse, FilterChain) line: 225
        FilterToBeanProxy.doFilter(ServletRequest, ServletResponse,
FilterChain) 
line: 125
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 202
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        ContentReaderFilter.doFilter(ServletRequest, ServletResponse,
FilterChain) 
line: 171
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 202
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        RequestUtilsFilter.doFilter(ServletRequest, ServletResponse,
FilterChain) 
line: 114
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 202
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        StandardWrapperValve.invoke(Request, Response) line: 213
        StandardContextValve.invoke(Request, Response) line: 178
        StandardHostValve.invoke(Request, Response) line: 126
        ErrorReportValve.invoke(Request, Response) line: 105
        StandardEngineValve.invoke(Request, Response) line: 107
        CoyoteAdapter.service(Request, Response) line: 148
        Http11Processor.process(InputStream, OutputStream) line: 856
        
Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection, 
Object[]) line: 744
        PoolTcpEndpoint.processSocket(Socket, TcpConnection, Object[]) line:
527
        LeaderFollowerWorkerThread.runIt(Object[]) line: 80
        ThreadPool$ControlRunnable.run() line: 684
        ThreadWithAttributes(Thread).run() line: 595



Here how the stack trace looks on the forward to /portal.do after 404 was 
intercepted



Thread [http-8585-Processor24] (Suspended (breakpoint at line 74 in 
CustomServlet))
        CustomServlet.service(ServletRequest, ServletResponse) line: 74
        ApplicationFilterChain.internalDoFilter(ServletRequest,
ServletResponse) 
line: 252
        ApplicationFilterChain.doFilter(ServletRequest, ServletResponse)
line: 173
        ApplicationDispatcher.invoke(ServletRequest, ServletResponse) line:
672
        ApplicationDispatcher.processRequest(ServletRequest,
ServletResponse) line: 
465
        ApplicationDispatcher.doForward(ServletRequest, ServletResponse)
line: 398
        ApplicationDispatcher.forward(ServletRequest, ServletResponse) line:
301
        StandardHostValve.custom(Request, Response, ErrorPage) line: 362
        StandardHostValve.status(Request, Response) line: 283
        StandardHostValve.invoke(Request, Response) line: 136
        ErrorReportValve.invoke(Request, Response) line: 105
        StandardEngineValve.invoke(Request, Response) line: 107
        CoyoteAdapter.service(Request, Response) line: 148
        Http11Processor.process(InputStream, OutputStream) line: 856
        
Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection, 
Object[]) line: 744
        PoolTcpEndpoint.processSocket(Socket, TcpConnection, Object[]) line:
527
        LeaderFollowerWorkerThread.runIt(Object[]) line: 80
        ThreadPool$ControlRunnable.run() line: 684
        ThreadWithAttributes(Thread).run() line: 595


Any idea will be greatly appreciated.

MC

Ps.
On weblogic the error handling triggers a redirect and the above problem is 
not present.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to