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 ]