This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Servlets and the fly likes PrintWriter flush() problem - flushing the output to the client Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "PrintWriter flush() problem - flushing the output to the client" Watch "PrintWriter flush() problem - flushing the output to the client" New topic
Author

PrintWriter flush() problem - flushing the output to the client

Nagesh Rachakonda
Ranch Hand

Joined: Dec 04, 2003
Posts: 34
Hi All,

I am experiencing a problem with forwarding the request to the client.

Please see below what I am doing

public void doPost()(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// Send the response to client.
forwardToJsp(xmlResponse, request, response);

// Log the performance statistics into database.
bd.logStatistics(startTime, endTime, getServerVersion());

}

private void forwardToJsp(
String xml,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

request.setAttribute("ImsResponse", xml);

RequestDispatcher rd = getServletContext().getRequestDispatcher("/jsp/ImsOut.jsp");
rd.forward(request, response);

}

The above method forwardToJsp() calls ImsOut.jsp.

Code in ImsOut.jsp is

<%
response.setContentType("application/xml; charset=UTF-8");
String strResponse = (String)request.getAttribute("ImsResponse");
out.print(strResponse);
out.flush(); // Flush the content to client.

%>

What I observed is servlet is sending the response to the client only after completing the database call bd.logStatistics().

For some reason flush() is not working. This is happening if the client is Java http client or Microsoft ASP/COM client. It works fine if the client is a browser. Is this the expected behavior? or Is it a bug in IBM servlet engine?

This problem is occurring in WSAD and shared WAS servers. Is there any way to make the servlet send the response to the Java http or MS COM client before completing the database call? Your help is greatly appreciated.

Note: For a reason the method call order is in that way in doPost(). Program has to work calling both methods one AFTER another.
[ September 27, 2005: Message edited by: Nagesh Rachakonda ]
Nagesh Rachakonda
Ranch Hand

Joined: Dec 04, 2003
Posts: 34
Dear Moderator,

Would you please take a minute in helping me out?

Appreciate your time.

Thanks
 
Consider Paul's rocket mass heater.
 
subject: PrintWriter flush() problem - flushing the output to the client
 
Similar Threads
HTTP Status 404 - Servlet is not available
Can we Have Write Service,doGet,doPost method implementation in a single servlet
HTTP method POST is not supported by this url
dopost within doget
Servlets example