diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat100PublishModuleVisitor.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat100PublishModuleVisitor.java
index c6d450a..57c429f 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat100PublishModuleVisitor.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat100PublishModuleVisitor.java
@@ -27,7 +27,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.Context;
-import org.eclipse.jst.server.tomcat.core.internal.xml.server40.JarResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PostResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PreResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.ServerInstance;
@@ -89,18 +88,18 @@
 		}
 		virtualClassClasspathElements.clear();
 
-		// Add Jars as JarResources if a jar, or as PostResources if a utility project
+		// Add Jars as PreResources if a jar, or as PostResources if a utility project
 		for (Iterator iterator = virtualJarClasspathElements.iterator();
 				iterator.hasNext();) {
 			Object virtualJarClassClasspathElement = iterator.next();
 			String jarPath = virtualJarClassClasspathElement.toString();
 			if (jarPath.endsWith(".jar")) {
-				JarResources jarResources = (JarResources)context.getResources().createElement("JarResources");
-				jarResources.setClassName("org.apache.catalina.webresources.JarResourceSet");
-				jarResources.setBase(jarPath);
-				jarResources.setWebAppMount("/WEB-INF/classes");
-				jarResources.setInternalPath("/");
-				jarResources.setClassLoaderOnly("true");
+				PreResources preResources = (PreResources)context.getResources().createElement("PreResources");
+				preResources.setClassName("org.apache.catalina.webresources.FileResourceSet");
+				preResources.setBase(jarPath);
+				preResources.setWebAppMount("/WEB-INF/lib/" + new File(jarPath).getName());
+				preResources.setInternalPath("/");
+				preResources.setClassLoaderOnly("false");
 			}
 			else {
 				PostResources postResources = (PostResources)context.getResources().createElement("PostResources");
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat80PublishModuleVisitor.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat80PublishModuleVisitor.java
index 7592bd1..a90d220 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat80PublishModuleVisitor.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat80PublishModuleVisitor.java
@@ -27,7 +27,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.Context;
-import org.eclipse.jst.server.tomcat.core.internal.xml.server40.JarResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PostResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PreResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.ServerInstance;
@@ -89,18 +88,18 @@
 		}
 		virtualClassClasspathElements.clear();
 
-		// Add Jars as JarResources if a jar, or as PostResources if a utility project
+		// Add Jars as PreResources if a jar, or as PostResources if a utility project
 		for (Iterator iterator = virtualJarClasspathElements.iterator();
 				iterator.hasNext();) {
 			Object virtualJarClassClasspathElement = iterator.next();
 			String jarPath = virtualJarClassClasspathElement.toString();
 			if (jarPath.endsWith(".jar")) {
-				JarResources jarResources = (JarResources)context.getResources().createElement("JarResources");
-				jarResources.setClassName("org.apache.catalina.webresources.JarResourceSet");
-				jarResources.setBase(jarPath);
-				jarResources.setWebAppMount("/WEB-INF/classes");
-				jarResources.setInternalPath("/");
-				jarResources.setClassLoaderOnly("true");
+				PreResources preResources = (PreResources)context.getResources().createElement("PreResources");
+				preResources.setClassName("org.apache.catalina.webresources.FileResourceSet");
+				preResources.setBase(jarPath);
+				preResources.setWebAppMount("/WEB-INF/lib/" + new File(jarPath).getName());
+				preResources.setInternalPath("/");
+				preResources.setClassLoaderOnly("false");
 			}
 			else {
 				PostResources postResources = (PostResources)context.getResources().createElement("PostResources");
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat85PublishModuleVisitor.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat85PublishModuleVisitor.java
index 4fc60d9..3c3ee66 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat85PublishModuleVisitor.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat85PublishModuleVisitor.java
@@ -27,7 +27,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.Context;
-import org.eclipse.jst.server.tomcat.core.internal.xml.server40.JarResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PostResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PreResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.ServerInstance;
@@ -89,18 +88,18 @@
 		}
 		virtualClassClasspathElements.clear();
 
-		// Add Jars as JarResources if a jar, or as PostResources if a utility project
+		// Add Jars as PreResources if a jar, or as PostResources if a utility project
 		for (Iterator iterator = virtualJarClasspathElements.iterator();
 				iterator.hasNext();) {
 			Object virtualJarClassClasspathElement = iterator.next();
 			String jarPath = virtualJarClassClasspathElement.toString();
 			if (jarPath.endsWith(".jar")) {
-				JarResources jarResources = (JarResources)context.getResources().createElement("JarResources");
-				jarResources.setClassName("org.apache.catalina.webresources.JarResourceSet");
-				jarResources.setBase(jarPath);
-				jarResources.setWebAppMount("/WEB-INF/classes");
-				jarResources.setInternalPath("/");
-				jarResources.setClassLoaderOnly("true");
+				PreResources preResources = (PreResources)context.getResources().createElement("PreResources");
+				preResources.setClassName("org.apache.catalina.webresources.FileResourceSet");
+				preResources.setBase(jarPath);
+				preResources.setWebAppMount("/WEB-INF/lib/" + new File(jarPath).getName());
+				preResources.setInternalPath("/");
+				preResources.setClassLoaderOnly("false");
 			}
 			else {
 				PostResources postResources = (PostResources)context.getResources().createElement("PostResources");
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat90PublishModuleVisitor.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat90PublishModuleVisitor.java
index d8d1303..c4d303c 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat90PublishModuleVisitor.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat90PublishModuleVisitor.java
@@ -27,7 +27,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.Context;
-import org.eclipse.jst.server.tomcat.core.internal.xml.server40.JarResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PostResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.PreResources;
 import org.eclipse.jst.server.tomcat.core.internal.xml.server40.ServerInstance;
@@ -89,18 +88,18 @@
 		}
 		virtualClassClasspathElements.clear();
 
-		// Add Jars as JarResources if a jar, or as PostResources if a utility project
+		// Add Jars as PreResources if a jar, or as PostResources if a utility project
 		for (Iterator iterator = virtualJarClasspathElements.iterator();
 				iterator.hasNext();) {
 			Object virtualJarClassClasspathElement = iterator.next();
 			String jarPath = virtualJarClassClasspathElement.toString();
 			if (jarPath.endsWith(".jar")) {
-				JarResources jarResources = (JarResources)context.getResources().createElement("JarResources");
-				jarResources.setClassName("org.apache.catalina.webresources.JarResourceSet");
-				jarResources.setBase(jarPath);
-				jarResources.setWebAppMount("/WEB-INF/classes");
-				jarResources.setInternalPath("/");
-				jarResources.setClassLoaderOnly("true");
+				PreResources preResources = (PreResources)context.getResources().createElement("PreResources");
+				preResources.setClassName("org.apache.catalina.webresources.FileResourceSet");
+				preResources.setBase(jarPath);
+				preResources.setWebAppMount("/WEB-INF/lib/" + new File(jarPath).getName());
+				preResources.setInternalPath("/");
+				preResources.setClassLoaderOnly("false");
 			}
 			else {
 				PostResources postResources = (PostResources)context.getResources().createElement("PostResources");
