This week's book giveaway is in the Cloud/Virtualization forum.
We're giving away four copies of Learning OpenStack Networking: Build a solid foundation in virtual networking technologies for OpenStack-based clouds and have James Denton on-line!
See this thread for details.
Win a copy of Learning OpenStack Networking: Build a solid foundation in virtual networking technologies for OpenStack-based clouds this week in the Cloud/Virtualization forum!
    Bookmark Topic Watch Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
  • Liutauras Vilda
  • Campbell Ritchie
  • Tim Cooke
  • Bear Bibeault
  • Devaka Cooray
  • Jeanne Boyarsky
  • Knute Snortum
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Ganesh Patekar
  • Stephan van Hulst
  • Pete Letkeman
  • Carey Brown
  • Tim Holloway
  • Ron McLeod
  • Vijitha Kumara
  • Mark post as helpful
  • send pies
  • Report post to moderator
The most common cause of this exception is a servlet or JSP attempting to write to the output stream after the response has been committed.

For servlets, the easiest way to avoid this is to branch the code in your service method in such a way as to insure that calls to HttpServletResponse.sendRedirect or RequestDispatcher.forward are always the last call made before the end of the method. This can be achieved by adding a return call just after either of these.


Another way this can happen is by attempting to redirect from within the middle of a JSP page, eg:

Another common place where an IllegalStateException is likely to occur is in a JSP that attempts to stream binary data. JSPs are primarily designed to format output as HTML. With HTML, white space characters are ignored. It is not uncommon for JSP compilers to inject their own white space charaters to the beginning and/or end of the output stream. Line breaks in the developer's code can also be interpreted as white space in the output stream. These white space characters can interfere with the generated servlet's ability to create and stream the binary outputdata, resulting in the IllegalStateException.

The simple solution to this problem is to always use a servlet for streaming binary data.

NOTE: Tomcat 5.5.X seems to be lenient on throwing an IllegalStateException. Although the response has been flushed, it seems to allow the redirection, without throwing any exception. Refer to this thread

Another -completely unrelated- source of this exception is calling the remove method of JavaDoc:java.util.Iterator more than once between calls to next.

Related to the previous cause, and not specific to JSP/Servlets/SCWCD: you mustn't try to use the same Stream twice:-The Stream had been completely consumed by the end of line 4, so the attempt to reuse it in line 6 will cause an IllegalStateException to be thrown.

Back to the JspFaq ServletsFaq ScwcdFaq
Consider Paul's rocket mass heater.
    Bookmark Topic Watch Topic
  • New Topic
Boost this thread!