String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
private boolean sendErrorPage(String location, Response response) { File file = new File(location); if (!file.isAbsolute()) { file = new File(getContainer().getCatalinaBase(), location); } if (!file.isFile() || !file.canRead()) { getContainer().getLogger().warn( sm.getString("errorReportValve.errorPageNotFound", location)); return false; } // Hard coded for now. Consider making this optional. At Valve level or // page level? response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); try (OutputStream os = response.getOutputStream(); InputStream is = new FileInputStream(file);){ IOTools.flow(is, os); } catch (IOException e) { getContainer().getLogger().warn( sm.getString("errorReportValve.errorPageIOException", location), e); return false; } return true; }
if (sendErrorPage(errorPage.getLocation(), response)) { sb.append(smClient.getString("errorReportValve.statusHeader", String.valueOf(statusCode), reason)).append("</h1>"); if (isShowReport()) { sb.append("<hr class=\"line\" />"); sb.append("<p><b>"); sb.append("</p>"); if (throwable != null) { String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.rootCause")); if (isShowServerInfo()) { sb.append("<h3>").append(ServerInfo.getServerInfo()).append("</h3>");
report(request, response, throwable); } catch (Throwable tt) {
if (sendErrorPage(errorPage.getLocation(), response)) { sb.append(smClient.getString("errorReportValve.statusHeader", String.valueOf(statusCode), reason)).append("</h1>"); if (isShowReport()) { sb.append("<hr class=\"line\" />"); sb.append("<p><b>"); sb.append("</p>"); if (throwable != null) { String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.rootCause")); if (isShowServerInfo()) { sb.append("<h3>").append(ServerInfo.getServerInfo()).append("</h3>");
super.report(request, response, throwable);
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
private boolean sendErrorPage(String location, Response response) { File file = new File(location); if (!file.isAbsolute()) { file = new File(getContainer().getCatalinaBase(), location); } if (!file.isFile() || !file.canRead()) { getContainer().getLogger().warn( sm.getString("errorReportValve.errorPageNotFound", location)); return false; } // Hard coded for now. Consider making this optional. At Valve level or // page level? response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); try (OutputStream os = response.getOutputStream(); InputStream is = new FileInputStream(file);){ IOTools.flow(is, os); } catch (IOException e) { getContainer().getLogger().warn( sm.getString("errorReportValve.errorPageIOException", location), e); return false; } return true; }
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(sm.getString("errorReportValve.rootCause"));
String stackTrace = getPartialServletStackTrace(throwable); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.exception")); Throwable rootCause = throwable.getCause(); while (rootCause != null && (loops < 10)) { stackTrace = getPartialServletStackTrace(rootCause); sb.append("<p><b>"); sb.append(smClient.getString("errorReportValve.rootCause"));