Christian Heindl: Tomcat: getOutputStream() has already been called

Beitrag lesen

Hallo allerseits!

ich habe mir ein JSP-File geschrieben welches es mir auf Abruf einen Dateinamen aus der Datenbank holt und diese Datei dann an den Browser sendet/senden soll. Naja, manchmal wird das Bild (testweise habe ich ein Bild zum abrufen, das JSP soll aber später alle möglichen Dateien an den Browser senden) angezeigt, manchmal nicht. Allerdings erhalte ich jedesmal in den Ausgaben von Tomcat eine Exception, wie die untenstehende.

Hier der Code den Tomcat wohl nicht so mag:

<snip>
BufferedInputStream filein = new BufferedInputStream(new FileInputStream(fileName));
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);
int objByte;

while((objByte = filein.read()) != -1) {
    byteStream.write(objByte);
}
filein.close();

response.reset();
response.setContentType(mimeType);
response.setContentLength(byteStream.size());

byteStream.writeTo(response.getOutputStream()); //<- Hier tritt die Exception auf!
</snip>

Kennt jemand das Problem und hat eine Lösung parat? Ich wäre Euch sehr dankbar!

MfG
Christian Heindl

--- Und hier die vollständige Exception ---
java.lang.IllegalStateException: getOutputStream() has already been called
at org.apache.tomcat.facade.HttpServletResponseFacade.getWriter(Unknown Source)
at org.apache.jasper.runtime.JspWriterImpl.initOut(Unknown Source)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(Unknown Source)
at bmm_getobj_10._jspService(bmm_getobj_10.java:185)
at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(Unknown Source)
at org.apache.tomcat.core.Handler.invoke(Unknown Source)
at org.apache.tomcat.core.Handler.service(Unknown Source)
at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)
at org.apache.tomcat.core.ContextManager.internalService(Unknown Source)
at org.apache.tomcat.core.ContextManager.service(Unknown Source)
at org.apache.tomcat.modules.server.Ajp13Interceptor.processConnection(Unknown Source)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown Source)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown Source)
at java.lang.Thread.run(Thread.java:484)