[493277] Use PreResources to load the external jar files

Change-Id: I358075b66a67274636f5d51e765660dd0b58f722
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");