Problem

Wenn Sie versuchen, Ihre JSP-Datei auszuführen, erhalten Sie einen Fehler im error-log Ihrer Instanz, der Folgendem ähnlich ist:

14:55:42 *ERROR* delivery: Unhandled Exception: java.lang.IllegalStateException: OutputStream already obtained java.lang.IllegalStateException: OutputStream already obtained

Lösung

Verwenden Sie Line-Killer und stellen Sie sicher, dass in der Datei keine Leerzeichen oder Zeilenumbrüche enthalten sind. Es folgt die ordnungsgemäße Implementierung der oben gezeigten JSP:

<%@ page import="java.io.*" %><% %><%@ page import="com.day.cq.delivery.DeliveryHttpServletRequest" %><% %><%@ page import="com.day.cq.activation.MimeTab" %><% %><%@ page import="com.day.cq.contentbus.*" %><% %><%@ page import="com.day.util.IO" %><% // Instanziieren Sie ein Communiqué Request Object auf der Basis der impliziten JSP-Anforderung DeliveryHttpServletRequest cqRequest = (DeliveryHttpServletRequest)-Anforderung; // setzen Sie die ContentType-Information der Antwort auf der Basis des request uri extension String mimeType = MimeTab.getContentType(cqRequest.getRequestURI()); response.setContentType(mimeType); // Verwenden Sie die request.getAtom()-Methode, wenn die Selectors das Content Atom definieren Atom atom = (Atom) cqRequest.getAtom(); // Instanziieren Sie das Content Atom und ordnen Sie es einem Java-Stream zu InputStream inputStream = atom.getStream(); IO.spool(inputStream, response.getOutputStream()); // schließen Sie den Eingangsstream inputStream.close(); %>

Hinweis:

Sie können Servlets verwenden, um Bilder anstelle von jsp zu verarbeiten.

Weitere Informationen

Dieses Problem tritt auf, wenn Sie in Ihrem jsp versuchen, den Output-Stream von Antworten zu erhalten, dieser aber bereits erhalten wurde. Es kann eine leere Zeile im JSP-Code vorhanden sein. Hier das Beispiel eines Bild-Spooling, das diesen Fehler hervorruft:

<%@ page import="java.io.*" %> <%@ page import="com.day.cq.delivery.DeliveryHttpServletRequest" %> <%@ page import="com.day.cq.activation.MimeTab" %> <%@ page import="com.day.cq.contentbus.*" %> <%@ page import="com.day.util.IO" %> <% // Instanciate a Communiqué Request Object based on the implicite JSP-request DeliveryHttpServletRequest cqRequest = (DeliveryHttpServletRequest) request; // set the response ContentType information based on the request uri extension String mimeType = MimeTab.getContentType(cqRequest.getRequestURI()); response.setContentType(mimeType); // Using the request.getAtom() method if the Selectors define the Content Atom Atom atom = (Atom) cqRequest.getAtom(); // Instanciate and cast the Content Atom to a Java stream InputStream inputStream = atom.getStream(); IO.spool(inputStream, response.getOutputStream()); // close the input stream inputStream.close(); %>

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie