This week's giveaway is in the EJB and other Java EE Technologies forum.
We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan 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 EJB 3 in Action this week in the EJB and other Java EE Technologies 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
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: PrintWriter flush() problem - flushing the output to the client
 
Similar Threads
Servlets example
dopost within doget
Can we Have Write Service,doGet,doPost method implementation in a single servlet
HTTP method POST is not supported by this url
HTTP Status 404 - Servlet is not available