/*
* Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net>
* Distributed under the terms of either:
* - the common development and distribution license (CDDL), v1.0; or
* - the GNU Lesser General Public License, v2.1 or later
*/
package winstone;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
/**
* A simple servlet that writes out the body of the error
*
* @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a>
* @version $Id: ErrorServlet.java,v 1.3 2006/02/28 07:32:47 rickknowles Exp $
*/
public class ErrorServlet extends HttpServlet {
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
Integer sc = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
String msg = (String) request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
Throwable err = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
if (err != null) {
err.printStackTrace(pw);
} else {
pw.println("(none)");
}
pw.flush();
// If we are here there was no error servlet, so show the default error page
String output = Launcher.RESOURCES.getString("WinstoneResponse.ErrorPage",
new String[] { sc + "", (msg == null ? "" : msg), sw.toString(),
Launcher.RESOURCES.getString("ServerVersion"),
"" + new Date() });
response.setContentLength(output.getBytes(response.getCharacterEncoding()).length);
Writer out = response.getWriter();
out.write(output);
out.flush();
}
}