Re: Error 500 with stack trace

Keith Fetterman <[email protected]> Wed, 03 May 2006 12:58:16 -0700
Newsgroups gmane.text.xml.resin.user
Organization Mariner Supply, Inc.
Message-ID <[email protected]>
Joe,

Thanks a bunch for pointing this out.  You just saved me some work 
because I thought I had to log the inner exception first to get all of it.

Keith

Joseph Dane wrote:
> Keith Fetterman <[email protected]> writes:
> 
>> a ServletException. When displaying the stack trace, the real cause is
>> at the bottom, which is not printed. Instead, I see " ... 16 more".
> 
> Everything about the trace is printed.  The "16 more" thing just
> shortens the display a bit.  It means "the next 16 frames that would
> have been printed here are the same as the bottommost 16 frames of the
> surrounding exception".
> 
> in your example, count up 16 frames from the bottom in the outer
> exception (that is, the first one printed, the ServletException) and
> you'll be 
> 
>   at com.marinersupply.servlet.actions.CheckOut.doAction(CheckOut.java:129)
> 
> which is where the ServletException was thrown.  the stack frames
> below that (that is, the callers) are the same for these two
> exceptions, so they aren't printed twice.
> 
>> Here is an example.
> 
>> javax.servlet.ServletException: Exception occurred during checkout
>>          at
>>          com.marinersupply.servlet.actions.CheckOut.doAction(CheckOut.java:129)
>>          at com.marinersupply.servlet.Control.service(Control.java:177)
>>          at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
>>          at
>>          com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:99)
>>          at
>>          com.marinersupply.common.servlet.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:37)
>>          at
>>          com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
>>          at
>>          com.marinersupply.common.servlet.HTTPSRedirectFilter.doFilter(HTTPSRedirectFilter.java:183)
>>          at
>>          com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
>>          at
>>          com.caucho.server.security.SecurityFilterChain.doFilter(SecurityFilterChain.java:135)
>>          at
>>          com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:175)
>>          at
>>          com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163)
>>          at
>>          com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208)
>>          at
>>          com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:396)
>>          at com.caucho.server.port.TcpConnection.run(TcpConnection.java:363)
>>          at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
>>          at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
>>          at java.lang.Thread.run(Thread.java:595)
>> Caused by: java.lang.IllegalStateException: forward() not allowed
>> after buffer has committed.
>>          at
>>          com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:139)
>>          at
>>          com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106)
>>          at
>>          com.marinersupply.servlet.actions.CheckOut.doAction(CheckOut.java:127)
>>          ... 16 more
>>
>> We are using Log4J.  Maybe there is a way to change the stack trace
>> printing behavior?  I just now thought of that.  dah...
>>
>>
>> Mattias Jiderhamn wrote:
>>> This has caused us some trouble, since we have the error logging in
>>> an "error servlet". Even if the error message cannot be shown in the
>>> browser, we want the error to be logged.
>>> At 2006-05-03 08:02, you wrote:
>>>> Hi,
>>>>  I've noticed that there's a difference on how Resin 3 handles
>>>> errorpage-things compared to Resin 2. It seems that if there is an
>>>> error in your JSP after something is already written to the
>>>> response and its buffer has been committed, the errorpage cannot be
>>>> shown anymore via the forward mechanism. This is propably what the
>>>> spec expects, but Resin 2 didn't work like this...
>>>>  -Kai
>>>>
>>>> ------------------------------------------------------------------------
>>>> *From:* [email protected] [
>>>> mailto:[email protected]] *On Behalf Of *Gary Wells
>>>> *Sent:* 2. toukokuuta 2006 21:33
>>>> *To:* [email protected]
>>>> *Subject:* RE: Error 500 with stack trace
>>>>
>>>> To clarify my two questions further…
>>>>
>>>>  
>>>>
>>>> 1) How do you get the custom error 500 page to display? I’ve got
>>>> the following in my web.xml:
>>>>
>>>>  
>>>>
>>>> <error-page>
>>>>
>>>>     <error-code>500</error-code>
>>>>
>>>>     <location>/500.jsp</location>
>>>>
>>>>   </error-page>
>>>>
>>>>  
>>>>
>>>> … but when an 500 error is thrown I get the following error message:
>>>>
>>>>  
>>>>
>>>> java.lang.IllegalStateException: forward() not allowed after buffer has
>>>>
>>>> committed.
>>>>
>>>> at
>>>> com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:139)
>>>>
>>>> at
>>>> com.caucho.server.webapp.RequestDispatcherImpl.error(RequestDispatcherImpl.java:113)
>>>>
>>>> at
>>>> com.caucho.server.webapp.ErrorPageManager.sendServletError(ErrorPageManager.java:363)
>>>>
>>>> at
>>>> com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:180)
>>>>
>>>> at
>>>> com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
>>>>
>>>> at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
>>>>
>>>> at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
>>>>
>>>> at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:492)
>>>>
>>>> at com.caucho.util.ThreadPool.run(ThreadPool.java:425)
>>>>
>>>> at java.lang.Thread.run(Thread.java:613)
>>>>
>>>>  
>>>>
>>>>  
>>>>
>>>> 2) How do you gain access to the stack trace of the original
>>>> exception so it can be displayed?
>>>>
>>>>  
>>>>
>>>>  
>>>>
>>>> Thanks – G
>>>>
>>>>  ------------------------------------------------------------------------
>>>> *From:* Gary Wells [ mailto:[email protected]]
>>>> *Sent:* Tuesday, May 02, 2006 10:51 AM
>>>> *To:* '[email protected]'
>>>> *Subject:* Error 500 with stack trace
>>>>
>>>>  
>>>>
>>>> Does anybody know how to setup Resin with a custom page for an
>>>> error 500 that displays the stack trace?
>>>>
>>>>  
>>>>
>>>> Thanks – G
>>
>>
>