Catch IOException when writing our response so that we don't freak out if the

client ungracefully stops listening to us.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2227 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2007-09-24 16:42:37 +00:00
parent e0d4d4302e
commit dd9d9df690
@@ -448,14 +448,14 @@ public class DispatcherServlet extends HttpServlet
protected void doRequest (HttpServletRequest request, HttpServletResponse response) protected void doRequest (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException throws ServletException, IOException
{ {
Context context = null; InvocationContext context = null;
try { try {
context = new InvocationContext(request, response); context = new InvocationContext(request, response);
setContentType(request, response); setContentType(request, response);
Template template = handleRequest(request, response, context); Template template = handleRequest(request, response, context);
if (template != null) { if (template != null) {
mergeTemplate(template, context, response); mergeTemplate(template, context);
} }
} catch (Exception e) { } catch (Exception e) {
@@ -524,12 +524,12 @@ public class DispatcherServlet extends HttpServlet
* *
* @param template template object returned by the {@link #handleRequest} method. * @param template template object returned by the {@link #handleRequest} method.
* @param context context created by the {@link #createContext} method. * @param context context created by the {@link #createContext} method.
* @param response servlet reponse (use this to get the output stream or writer).
*/ */
protected void mergeTemplate (Template template, Context context, HttpServletResponse response) protected void mergeTemplate (Template template, InvocationContext context)
throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, throws ResourceNotFoundException, ParseErrorException, MethodInvocationException,
IOException, UnsupportedEncodingException, Exception UnsupportedEncodingException, IOException, Exception
{ {
HttpServletResponse response = context.getResponse();
ServletOutputStream output = response.getOutputStream(); ServletOutputStream output = response.getOutputStream();
// ASSUMPTION: response.setContentType() has been called. // ASSUMPTION: response.setContentType() has been called.
String encoding = response.getCharacterEncoding(); String encoding = response.getCharacterEncoding();
@@ -544,6 +544,11 @@ public class DispatcherServlet extends HttpServlet
} }
template.merge(context, vw); template.merge(context, vw);
} catch (IOException ioe) {
// the client probably crashed or aborted the connection ungracefully, so use log.info
log.info("Failed to write response [uri=" + context.getRequest().getRequestURI() +
", error=" + ioe + "]");
} finally { } finally {
if (vw != null) { if (vw != null) {
try { try {