[101284] Error if multiple modules have the same context root
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.java
index 70f91cb..e3d9170 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.java
@@ -61,6 +61,7 @@
 	public static String errorPortInvalid;
 	public static String errorPortInUse;
 	public static String errorPortsInUse;
+	public static String errorDuplicateContextRoot;
 	public static String configurationEditorActionModifyPortDescription;
 	public static String configurationEditorActionModifyPort;
 	public static String configurationEditorActionModifyMimeMappingDescription;
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.properties b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.properties
index ce0dab6..d48759a 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.properties
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Messages.properties
@@ -86,6 +86,8 @@
 errorSpec41=Tomcat version 4.1 only supports J2EE 1.2 and 1.3 Web modules
 errorSpec50=Tomcat version 5.0 only supports J2EE 1.2, 1.3, and 1.4 Web modules
 errorSpec55=Tomcat version 5.5 only supports J2EE 1.2, 1.3, and 1.4 Web modules
+errorDuplicateContextRoot=Two or more Web modules defined in the configuration have the same context root ({0}). \
+  To start this server you will need to remove the duplicate(s).
 
 warningJRE=Tomcat requires a Java SDK in order to compile JSP files. Ensure that the JRE preference settings point to an SDK install location.
 
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
index a0fa217..5bf81a4 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
@@ -297,6 +297,18 @@
 			throw new CoreException(new Status(IStatus.ERROR, TomcatPlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorPortsInUse, new String[] {portStr, getServer().getName()}), null));
 		}
 		
+		// check that there is only one app for each context root
+		iterator = configuration.getWebModules().iterator();
+		List contextRoots = new ArrayList();
+		while (iterator.hasNext()) {
+			WebModule module = (WebModule) iterator.next();
+			String contextRoot = module.getPath();
+			if (contextRoots.contains(contextRoot))
+				throw new CoreException(new Status(IStatus.ERROR, TomcatPlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorDuplicateContextRoot, new String[] { contextRoot }), null));
+			
+			contextRoots.add(contextRoot);
+		}
+		
 		setServerState(IServer.STATE_STARTING);
 		setMode(launchMode);