}
response.setStatus(404);
response.setContentType(MimeTypes.TEXT_HTML);
ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(1500);
String uri = request.getRequestURI();
uri = StringUtil.replace(uri, "<", "<");
uri = StringUtil.replace(uri, ">", ">");
writer.write("<HTML>\n<HEAD>\n<TITLE>Error 404 - Not Found");
writer.write("</TITLE>\n<BODY>\n<H2>Error 404 - Not Found.</H2>\n");
writer.write("No service matched or handled this request.<BR>");
writer.write("Known services are: <ul>");
Set servers = JettyContextManager.this.servers.keySet();
for (Iterator iter = servers.iterator(); iter.hasNext();) {
String serverUri = (String) iter.next();
Server server = (Server) JettyContextManager.this.servers.get(serverUri);
Handler[] handlers = server.getChildHandlersByClass(ContextHandler.class);
for (int i = 0; handlers != null && i < handlers.length; i++) {
if (!(handlers[i] instanceof ContextHandler)) {
continue;
}
ContextHandler context = (ContextHandler) handlers[i];
StringBuffer sb = new StringBuffer();
sb.append(serverUri);
if (!context.getContextPath().startsWith("/")) {
sb.append("/");
}
sb.append(context.getContextPath());
if (!context.getContextPath().endsWith("/")) {
sb.append("/");
}
if (context.isStarted()) {
writer.write("<li><a href=\"");
writer.write(sb.toString());
writer.write("?wsdl\">");
writer.write(sb.toString());
writer.write("</a></li>\n");
} else {
writer.write("<li>");
writer.write(sb.toString());
writer.write(" [Stopped]</li>\n");
}
}
}
for (int i=0; i < 10; i++) {
writer.write("\n<!-- Padding for IE -->");
}
writer.write("\n</BODY>\n</HTML>\n");
writer.flush();
response.setContentLength(writer.size());
OutputStream out = response.getOutputStream();
writer.writeTo(out);
out.close();
}