Improve some error handling to clean up the catalina log.

This commit is contained in:
Jim Blake 2015-04-02 17:05:47 -04:00
parent 6aa29378e5
commit ced99d7703
2 changed files with 20 additions and 7 deletions

View file

@ -3,6 +3,7 @@
package edu.cornell.mannlib.vitro.webapp.controller.api;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Collection;
@ -86,19 +87,29 @@ public class VitroApiServlet extends HttpServlet {
protected void sendShortResponse(int statusCode, String message,
HttpServletResponse resp) throws IOException {
resp.setStatus(statusCode);
PrintWriter writer = resp.getWriter();
PrintWriter writer = getWriter(resp);
writer.println("<H1>" + statusCode + " " + message + "</H1>");
}
protected void sendShortResponse(int statusCode, String message,
Throwable e, HttpServletResponse resp) throws IOException {
log.warn("Unexpected exception: " + e, e);
sendShortResponse(statusCode, message, resp);
PrintWriter writer = resp.getWriter();
PrintWriter writer = getWriter(resp);
writer.println("<pre>");
e.printStackTrace(writer);
writer.println("</pre>");
}
private PrintWriter getWriter(HttpServletResponse resp) throws IOException {
try {
return resp.getWriter();
} catch (IllegalStateException e) {
return new PrintWriter(new OutputStreamWriter(
resp.getOutputStream()));
}
}
// ----------------------------------------------------------------------
// Helper classes
// ----------------------------------------------------------------------

View file

@ -117,13 +117,15 @@ public class FileServingServlet extends VitroHttpServlet {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
log.warn("Serving " + request.getRequestURI()
+ ". Failed to close input stream.", e);
}
if (out != null) {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
log.warn("Serving " + request.getRequestURI()
+ ". Failed to close output stream.", e);
}
}
}