[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);