Servlet mischt Header und Inhalt und schreibt zweimal dasselbe in der Ausgabe?

8

Ich habe Servlet implementiert, das sich nicht stabil verhält, manchmal mischt es Header in Inhalt und schreibt zweimal dasselbe.

und manchmal gibt es eine Datei zurück, die einen Antwort-Header enthält, gemischt wie folgt:

%Vor%

UPDATE * Diese Situation passiert auf Tomcat7 *

Ich habe auch auf Tomcat6 und Jetty getestet, in beiden Fällen gibt es keine Injektion von HTTP-Header zu Response-Inhalt aber HTTP-Header ist falsch und gibt falschen Dateinamen zurück, der Dateiinhalt ist korrekte Datei. Ich habe bemerkt, dass eine falsche Rückkehr von Servlet passiert, wenn returns transfer-encoding ist chunked.

Wenn ich Header-Zeug und zweiten Teil von Bytes entferne, ist es eine gültige Datei. Ist es möglich, dass das Problem der Synchronisierung auftritt?

UPDATE Hier ist die vollständige Quelle von Servlet:

%Vor%

UPDATE * Der Aufruf kommt von der GWT-Anwendung, wenn er die URL des Servlets mit den erforderlichen Parametern generiert und in IFrame setzt, dann werden die Servlet-Aufrufe und die Datei heruntergeladen. Gibt es irgendwelche Vorschläge? *

    
Sergey Gazaryan 30.11.2012, 15:07
quelle

1 Antwort

2

Ich hatte vor langer Zeit ein ähnliches Problem. Es stellte sich heraus, dass das Schließen des ServletOutputStream zu einem unerwarteten Verhalten im Anfragefluss führte.

Servlets sollen den Container, der OutputStream zur Verfügung stellt, nicht schließen. Ein anderes Problem könnte sein, die Inhaltslänge manuell festzulegen, es liegt in der Verantwortung des Containers, den richtigen Wert zu erzeugen.

Versuchen Sie zusammenzufassen, out.close() und response.setContentLength()

zu entfernen     
Carlo Pellegrini 30.11.2012 20:23
quelle

Tags und Links