Probé HttpResponse#flushBuffer
y PrintWriter#flush
en Tomcat 7
debajo, pero parecía que la respuesta los ignoraba más que enjuagar el contenido por el cable lo antes posible.Tomcat no descarga el búfer de respuesta
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw = response.getWriter();
pw.println("say hi now");
pw.flush();
response.flushBuffer();
try {
Thread.sleep(5000);
} catch (Exception e) {
}
pw.println("say bye in 5 seconds");
}
}
El navegador muestra "hola" y "adiós" juntos después de la demora. ¿Es una mala conducta o intencional?
@EDIT
De acuerdo con la sugerencia @Tomasz Nurkiewicz
's, he probado de nuevo con curl
entonces el problema se ha ido. Parece que los navegadores estándar y tcp/ip monitor
paquete small pieces of contents
de la misma respuesta http para unirlos.
@EDIT 2
También se observó que tanto HttpResponse#flushBuffer
y PrintWriter#flush
unidad Tomcat 7
para enviar el cliente chunked data.
Creo que es una configuración de servidor de aplicaciones. Por favor, ver [mi publicación] (http://stackoverflow.com/questions/43453508/end-to-end-reactive-streaming-restful-service). –