|
|
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.
|
|