The servlet spec defines the behavior that calling HttpServletRequest.sendError() when the response has already been committed results in an IllegalStateException. To avoid this you need to either avoid the "sendError" or avoid committing the response.
Your log indicates you are running Tomcat 3.2.x, not Tomcat 3.3. There is a known bug in Tomcat 3.2.x where RequestDispacher.include() forces the response to be committed. This was done to avoid a worse bug with respect to sessions. This was fixed in Tomcat 3.3 (and doesn't apply to Tomcat 4.x). If the committing of the response is due to this bug, then you would likely get better behavior with Tomcat 3.3, or Tomcat 4.x. Regardless of the IllegalStateException, the client shouldn't be left hanging. However, I haven't worked with SOAP to know if a problem like this is most likely to be caused by the app, SOAP, Apache, Tomcat, or the connector. Somebody should be handling the error better, but without more details, I can't comment more. Cheers, Larry > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, November 27, 2001 9:23 AM > To: [EMAIL PROTECTED] > Subject: Lost message via servlet using tomcat 3.3 > > > > Hello -- I am using a soap servlet (WASP 1.x) and tomcat 3.3 > with apache. From > time to time I get the following error message: > > > ----- > 2001-11-20 08:18:14 - PoolTcpConnector: Starting > Ajp12ConnectionHandler on 8007 > 2001-11-21 09:59:07 - Ctx( /soap ): Servlet API error: > sendError with commited buffer > 2001-11-21 09:59:07 - Ctx( /soap ): IllegalStateException in: > R( /soap + /servlet + /soap/purge) Response has already been committed > 2001-11-21 10:04:15 - Ctx( /soap ): Servlet API error: > sendError with commited buffer > 2001-11-21 10:04:15 - Ctx( /soap ): IllegalStateException in: > R( /soap + /servlet + /soap/purge) Response has already been committed > 2001-11-23 03:37:55 - Ctx( /soap ): Servlet API error: > sendError with commited buffer > 2001-11-23 03:37:55 - Ctx( /soap ): IllegalStateException in: > R( /soap + /servlet + /soap/purge) Response has already been committed > 2001-11-23 03:38:16 - Ctx( /soap ): Servlet API error: > sendError with commited buffer > 2001-11-23 03:38:16 - Ctx( /soap ): IllegalStateException in: > R( /soap + /servlet + /soap/purge) Response has already been committed > 2001-11-27 02:15:14 - Ctx( /soap ): Servlet API error: > sendError with commited buffer > ---- > > > At the user level I cannot see why this is happening (i.e., > the user code > does a return -- the soap layer should generate a response > and send it to the > client). However, when this error occurs the client never > gets a response > (the above error seems to imply that two responses were > generated not none). > > I have three concerns: > a) When this happens the client never times out -- can the > apache webserver > not be told to drop the connection ? > > b) Why is this happening ? > > c) If it is a tomcat bug (I guess it could be a wasp or a > user (my) bug) - is > it fixed in tomcat 4.x series ? > > Thanks, > Alan > > -- > To unsubscribe: <mailto:[EMAIL PROTECTED]> > For additional commands: <mailto:[EMAIL PROTECTED]> > Troubles with the list: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe: <mailto:[EMAIL PROTECTED]> For additional commands: <mailto:[EMAIL PROTECTED]> Troubles with the list: <mailto:[EMAIL PROTECTED]>
