JSPwriterImpl generates IO exception while processing jsp:include that gets forwarded.

2009-07-25 Thread Leonard Gestrin
Hello, 
This is my second attempt to get anyone's opinion if what's happening is a 
defect or it can be prevented somehow. I hope it generates more replies. 

In my webapp application I have servlet filter that handles error handling for 
runtime exceptions; when such exception happens, it forwards request to error 
page where user-frienldy error is presented. 
It works fine for most of the cases, however, if runtime exception happens 
during processing of jsp:include/ directive, I am getting various exceptions 
in the log  (depending on the location of jsp:include/ with respect to other 
tags.)
These exceptions do not appear to cause any harm, however I was curious why are 
they happening in the first place. Is it illegal to forward request while 
processing include?  This is 6.x version of tomcat.

Exception might look like this:

  java.io.IOException: Stream closed  
org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)

Or like this: 

Caused by: java.io.IOException: Stream closed
at 
org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
at 
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
at 
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
... 45 more

Caused by: java.io.IOException: Stream closed
at 
org.apache.jasper.runtime.BodyContentImpl.ensureOpen(BodyContentImpl.java:582)
at 
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:142)
at 
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:159)
at 
org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f1(projects_002dtab_002dcontainer_jsp.java:484)
at 
org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002drender_005f0(projects_002dtab_002dcontainer_jsp.java:138)
at org.apache

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: JSPwriterImpl generates IO exception while processing jsp:includethat gets forwarded.

2009-07-25 Thread Leonard Gestrin
I have servlet filter that is invoked ahead of any application code that 
catches all unhandled exceptions, and then it forwards request to appropriate 
page depending on the exception.

I am indeed doing requestDispatcher.forward() and I set attributes on the 
request that are later used in custom error jsp for presentation.

It seems to work fine for all the cases so far except with jsp:include 
someservlet/ where someservlet generates runtime exception. (the browser does 
get the right error page, but exceptions are logged from tomcat).


I will experiment with using response.sendError() although it's not clear how 
to pass information back to the page (it appears I can only send a message) , 
such as stack trace, timestsamp of error, etc. I guess I can cramp it into 
message and parse it back in the page, but It does not feel right. 
 I also think that I might be in danger of getting IllegalStateException since 
it's possible that some info can be already written back to the client. Lets 
say, I have multiple jsp:include servlet1/, jsp:include servlet2/, and 
second include generated runtime exception - I suspect this might resolve in 
IllegalStateException during sendError() although i haven't tested it yet.

Thank you for your responses; 


-Original Message-
From: Caldarale, Charles R [mailto:chuck.caldar...@unisys.com] 
Sent: Saturday, July 25, 2009 6:48 PM
To: Tomcat Users List
Subject: RE: JSPwriterImpl generates IO exception while processing 
jsp:includethat gets forwarded.

 From: Leonard Gestrin [mailto:leonard.gest...@markettools.com]
 Subject: JSPwriterImpl generates IO exception while processing
 jsp:includethat gets forwarded.
 
 Is it illegal to forward request while processing include?

No, but it's illegal to forward a request after the response has been committed.

Are you actually doing a RequestDispatcher.forward() call, or are you using 
HttpServletRequest.sendError()?  The latter is the proper way to trigger the 
error page.

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: JSPwriterImpl generates IO exception while processing jsp:include that gets forwarded.

2009-07-25 Thread Leonard Gestrin
Hi Martin,
The filter is just a pass through to application code - it only gets to work if 
there is runtime exception coming back from processing request. 

ErrorHandlerFilter  is mapped to REQUEST, FORWARD, INCLUDE

It has 

Try{
filterChain.doFilter(request, response);
} catch (throwable th){
///   ..process th. (setting some attributes in requests for presentation in 
errorPage.jsp
   request.getRequestDispatcher(errorPage.jsp).forward(
request,
response);
}

Example execution path where the issue happens is the following 

Browser- servletX-forward to result.sp; on result.jsp there is jsp:include 
someServlet/  and someServlet throws runtime.

I hope it makes sense :)

Thanks


-Original Message-
From: Martin Gainty [mailto:mgai...@hotmail.com] 
Sent: Saturday, July 25, 2009 6:46 PM
To: Tomcat Users List
Subject: RE: JSPwriterImpl generates IO exception while processing 
jsp:include that gets forwarded.


dont understand why you want to forward before jsp:include has been processed? 

could you explain a bit about webapp architecture or workflow you wish to 
implement?
Martin Gainty 
__ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
 
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger 
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung 
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem 
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. 
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung 
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est 
interdite. Ce message sert à l'information seulement et n'aura pas n'importe 
quel effet légalement obligatoire. Étant donné que les email peuvent facilement 
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité 
pour le contenu fourni.




 From: leonard.gest...@markettools.com
 To: users@tomcat.apache.org
 Date: Sat, 25 Jul 2009 15:08:51 -0700
 Subject: JSPwriterImpl generates IO exception while processing jsp:include 
 that gets forwarded.
 
 Hello, 
 This is my second attempt to get anyone's opinion if what's happening is a 
 defect or it can be prevented somehow. I hope it generates more replies. 
 
 In my webapp application I have servlet filter that handles error handling 
 for runtime exceptions; when such exception happens, it forwards request to 
 error page where user-frienldy error is presented. 
 It works fine for most of the cases, however, if runtime exception happens 
 during processing of jsp:include/ directive, I am getting various 
 exceptions in the log  (depending on the location of jsp:include/ with 
 respect to other tags.)
 These exceptions do not appear to cause any harm, however I was curious why 
 are they happening in the first place. Is it illegal to forward request while 
 processing include?  This is 6.x version of tomcat.
 
 Exception might look like this:
 
   java.io.IOException: Stream closed  
 org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
 
 Or like this: 
 
 Caused by: java.io.IOException: Stream closed
 at 
 org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
 at 
 org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
 at 
 org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
 ... 45 more
 
 Caused by: java.io.IOException: Stream closed
 at 
 org.apache.jasper.runtime.BodyContentImpl.ensureOpen(BodyContentImpl.java:582)
 at 
 org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:142)
 at 
 org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:159)
 at 
 org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f1(projects_002dtab_002dcontainer_jsp.java:484)
 at 
 org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002drender_005f0(projects_002dtab_002dcontainer_jsp.java:138)
 at org.apache
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 

_
BingT brings you maps, menus, and reviews organized in one place. Try it now.
http://www.bing.com/search?q=restaurantsform=MLOGENpubl=WLHMTAGcrea=TXT_MLOGEN_Local_Local_Restaurants_1x1


java.io.IOException: Stream closed org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204) on forward while processing jsp:include

2009-07-20 Thread Leonard Gestrin
Hello,
In my application I have servlet filter that handles error handling for runtime 
exceptions; when such exception happens, it forwards request to error page 
where user-frienldy error is presented. 
It works fine for most of the cases, however, if runtime exception happens 
during processing of jsp:include/ directive, I am getting various exceptions 
in the log  (depending on the location of jsp:include/ with respect to other 
tags.)
These exceptions do not appear to cause any harm, however I was curious why are 
they happening in the first place. Is it illegal to forward request while 
processing include?  This is 6.x version of tomcat.


Caused by: java.io.IOException: Stream closed
at 
org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
at 
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
at 
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
... 45 more

Caused by: java.io.IOException: Stream closed
at 
org.apache.jasper.runtime.BodyContentImpl.ensureOpen(BodyContentImpl.java:582)
at 
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:142)
at 
org.apache.jasper.runtime.BodyContentImpl.write(BodyContentImpl.java:159)
at 
org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f1(projects_002dtab_002dcontainer_jsp.java:484)
at 
org.apache.jsp.WEB_002dINF.jsp.projects_002dtab_002dcontainer_jsp._jspx_meth_stripes_005flayout_002drender_005f0(projects_002dtab_002dcontainer_jsp.java:138)
at org.apache

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



solution RE: request.getSession() generates IllegalStateException in top filter(appears, response not being recycled properly if SocketException happenedfor it in the past)

2009-04-17 Thread Leonard Gestrin
I found a solution that seems to hold.

Instead of associating ImageWriter directly with response.outputstream, I 
create temporary ByteInputStream that is associated with 
javax.imageio.ImageWriter 

Once imagewriter is done, I am dumping ByteInputStream bytes to  
response.outputsream.

My theory is that ImageWriter was hanging to outputstream longer than it 
supposed to 
And that was causing issues in ClientAbortException cases.

Thanks


-Original Message-
From: Caldarale, Charles R [mailto:chuck.caldar...@unisys.com] 
Sent: Thursday, April 16, 2009 9:45 AM
To: Tomcat Users List
Subject: RE: request.getSession() generates IllegalStateException in top 
filter(appears, response not being recycled properly if SocketException 
happenedfor it in the past)

 From: Leonard Gestrin [mailto:leonard.gest...@markettools.com]
 Subject: request.getSession() generates IllegalStateException in top
 filter(appears, response not being recycled properly if SocketException
 happenedfor it in the past)
 
 After a while, the same response object is being used by tomcat again,
 but as it gets to a first filter, I can see that it's already in
 commited state (response.isCommitted()==true)

It's not completely clear from your description whether the filter is part of 
the request that encountered the socket error or a different request.  If the 
former, the behavior you observe is expected; if the latter, you may be running 
into this bug, fixed over a year ago:
https://issues.apache.org/bugzilla/show_bug.cgi?id=30949

 This is tomcat apache-tomcat-5.5.20, JRE 15, WinXP.

What happens if you try it on a version that's not over 2.5 years old?

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: request.getSession() generates IllegalStateException in top filter(appears, response not being recycled properly if SocketException happenedfor it in the past)

2009-04-16 Thread Leonard Gestrin
Hi Chuck,
I downloaded tomcat 6.0.18 and the problem still happens.

The filter is not on the path to servlet that generates image;

The problem with response being already committed happens in various places (in 
filter and in graph servlet itself on the subsequent calls).

I can see that only tomcat's code in on the stack when it happens.

Thanks


-Original Message-
From: Caldarale, Charles R [mailto:chuck.caldar...@unisys.com]
Sent: Thursday, April 16, 2009 9:45 AM
To: Tomcat Users List
Subject: RE: request.getSession() generates IllegalStateException in top 
filter(appears, response not being recycled properly if SocketException 
happenedfor it in the past)

 From: Leonard Gestrin [mailto:leonard.gest...@markettools.com]
 Subject: request.getSession() generates IllegalStateException in top
 filter(appears, response not being recycled properly if SocketException
 happenedfor it in the past)

 After a while, the same response object is being used by tomcat again,
 but as it gets to a first filter, I can see that it's already in
 commited state (response.isCommitted()==true)

It's not completely clear from your description whether the filter is part of 
the request that encountered the socket error or a different request.  If the 
former, the behavior you observe is expected; if the latter, you may be running 
into this bug, fixed over a year ago:
https://issues.apache.org/bugzilla/show_bug.cgi?id=30949

 This is tomcat apache-tomcat-5.5.20, JRE 15, WinXP.

What happens if you try it on a version that's not over 2.5 years old?

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



request.getSession() generates IllegalStateException in top filter (appears, response not being recycled properly if SocketException happened for it in the past)

2009-04-15 Thread Leonard Gestrin
Hello,

This is my first post on the list and I've been using tomcat for few years, so 
I want to start off stating that it is an excellent product.

However, I've ran into an issue, which I am not sure what to do about.

We have jsp that displays multiple images, which is being written directly to 
the page by the servlet.

img src=/chart/DrawTestChart

Every once in while, in the servlet,  while writing the bytes out, I get  
ClientAbortException:  java.net.SocketException: Connection reset by peer

At this point, I catch an exception and in finally block, I am trying to close 
response.outputstream.

After a while, the same response object is being used by tomcat again, but as 
it gets to a first filter, I can see that it's already in commited state 
(response.isCommitted()==true)

I know it's the same response object for which SocketException was generated, 
because I am printing response.hashcode() in chart servlet and in Filter

This really sucks, because anything I try to do with such response is doomed to 
fail :)

So, please advise how can I work around this issue, short of writing image in 
temp directory of tomcat as oppose to directly to response output stream.

This is tomcat apache-tomcat-5.5.20, JRE 15, WinXP.

I can provide code snippets, if it would be helpful. (chart servlet is using 
jdk classes
java.awt.image.BufferedImage to create image
javax.imageio.ImageWriter that is wrapped on top of response.outputstream)

Thanks

Leonard







-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org