diff --git a/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
index 2b9ae14..00fcc59 100644
--- a/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.preview/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.server.preview.internal
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.mortbay.jetty
+ org.mortbay.jetty,
+ org.apache.commons.logging
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
index b7a09ce..7992520 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/IMemento.java
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2007 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
index 97f0fe5..185c621 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/Messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2004, 2005 IBM Corporation and others.
+# Copyright (c) 2007 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
index d589036..9d5cad8 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/PreviewStarter.java
@@ -11,6 +11,9 @@
 package org.eclipse.wst.server.preview.internal;
 
 import java.io.File;
+import java.util.logging.Filter;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
 
 import org.mortbay.http.HttpContext;
 import org.mortbay.http.handler.ResourceHandler;
@@ -18,6 +21,12 @@
 import org.mortbay.jetty.servlet.WebApplicationContext;
 
 public class PreviewStarter {
+	private static final String[] avertedLogs = new String[] {
+		"org.mortbay.util.Container", "org.mortbay.http.HttpServer",
+		"org.mortbay.util.Credential", "org.mortbay.http.SocketListener",
+		"org.mortbay.http.HttpServer", "org.mortbay.jetty.Server"
+	};
+
 	protected String configPath;
 	protected Server server;
 
@@ -46,8 +55,44 @@
 				System.out.println();
 			}
 			
+			for (int i = 0; i < avertedLogs.length; i++) {
+				Logger logger = Logger.getLogger(avertedLogs[i]);
+				logger.setFilter(new Filter() {
+					public boolean isLoggable(LogRecord record) {
+						//Trace.trace(Trace.FINEST, "Averted Jetty log: " + record.getMessage());
+						//System.out.println("averted: " + record.getLoggerName() + ": " + record.getMessage());
+						return false;
+					}
+				});
+			}
+			
+			// helper code to find jetty loggers
+			/*Logger logger = Logger.getLogger("org.mortbay.http.HttpServer");
+			logger.addHandler(new java.util.logging.Handler() {
+				public void close() throws SecurityException {
+					// ignore
+				}
+
+				public void flush() {
+					// ignore
+				}
+
+				public void publish(LogRecord record) {
+					System.out.println("Logger found: " + record.getLoggerName());
+				}
+			});*/
+			
 			server = new Server();
 			server.addListener(":" + config.getPort());
+			server.setTrace(false);
+			server.setStatsOn(false);
+			
+			/*HttpContext context2 = new HttpContext();
+			context2.setContextPath("/");
+			context2.addHandler(new WTPErrorPageHandler());
+			context2.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
+			server.addContext(context2);
+			server.setRootWebApp("/");*/
 			
 			for (int i = 0; i < size; i++) {
 				Module module = m[i];
@@ -56,11 +101,19 @@
 					context.setContextPath(module.getContext());
 					context.setResourceBase(module.getPath());
 					context.addHandler(new ResourceHandler());
+					context.addHandler(new WTPErrorPageHandler());
+					context.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
 					server.addContext(context);
 				} else {
-					//System.out.println(module.getContext() + " - " + module.getPath());
-					WebApplicationContext context = server.addWebApplication(module.getContext(), module.getPath() + File.separator);
-					context.setResourceBase(module.getPath() + File.separator);
+					WebApplicationContext context = server.addWebApplication(module.getContext(), module.getPath());
+					context.setResourceBase(module.getPath());
+					//context.addHandler(new ResourceHandler());
+					context.addHandler(new WTPErrorPageHandler());
+					context.setAttribute(HttpContext.__ErrorHandler, new WTPErrorPageHandler());
+					
+					//context.setClassLoader(getClass().getClassLoader());
+					//context.start();
+					
 					//WebApplicationContext context = server.addWebApplication("/", module.getPath() + "/");
 					/*context.setConfigurationClassNames(new String[] { "org.mortbay.jetty.servlet.XMLConfiguration" });
 					context.setResourceBase(module.getPath());
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java
new file mode 100644
index 0000000..4b49da5
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/WTPErrorPageHandler.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.preview.internal;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.net.URLDecoder;
+
+import org.mortbay.http.HttpException;
+import org.mortbay.http.HttpFields;
+import org.mortbay.http.HttpRequest;
+import org.mortbay.http.HttpResponse;
+import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.util.ByteArrayISO8859Writer;
+import org.mortbay.util.StringUtil;
+
+public class WTPErrorPageHandler extends AbstractHttpHandler {
+	private static final long serialVersionUID = 1L;
+
+	public void handle(String pathInContext, String pathParams, HttpRequest request,
+			HttpResponse response) throws HttpException, IOException {
+		response.setContentType(HttpFields.__TextHtml);
+		ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(2048);
+		writeErrorPage(request, writer, response.getStatus(), response.getReason());
+		writer.flush();
+		response.setContentLength(writer.size());
+		writer.writeTo(response.getOutputStream());
+		writer.destroy();
+	}
+
+	protected void writeErrorPage(HttpRequest request, Writer writer, int code,
+			String message) throws IOException {
+		if (message != null) {
+			message = URLDecoder.decode(message, "UTF-8");
+			message = StringUtil.replace(message, "<", "&lt;");
+			message = StringUtil.replace(message, ">", "&gt;");
+		}
+		String uri = request.getPath();
+		uri = StringUtil.replace(uri, "<", "&lt;");
+		uri = StringUtil.replace(uri, ">", "&gt;");
+		writer.write("<html>\n<head>\n<title>Error ");
+		writer.write(Integer.toString(code));
+		writer.write(' ');
+		writer.write(message);
+		writer.write("</title>\n</head>\n<body>\n<h2>HTTP ERROR: ");
+		writer.write(Integer.toString(code));
+		writer.write("</h2><pre>");
+		writer.write(message);
+		writer.write("</pre>\n");
+		writer.write("<p>RequestURI=");
+		writer.write(uri);
+		writer.write("</p>");
+		writer.write("\n</body>\n</html>\n");
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
index 9281c2a..a6b4bfb 100644
--- a/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
+++ b/plugins/org.eclipse.wst.server.preview/src/org/eclipse/wst/server/preview/internal/XMLMemento.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2007 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
