This commit was manufactured by cvs2svn to create tag 'R3_3_1'.
diff --git a/features/org.eclipse.jst.server_adapters.ext.feature/feature.properties b/features/org.eclipse.jst.server_adapters.ext.feature/feature.properties
index 757e6ae..2913721 100644
--- a/features/org.eclipse.jst.server_adapters.ext.feature/feature.properties
+++ b/features/org.eclipse.jst.server_adapters.ext.feature/feature.properties
@@ -15,14 +15,14 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
-featureName=JST Server Adapters
+featureName=JST Server Adapters Extensions
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
 
 # "description" property - description of the feature
-description=Server adapters for use with the JST server tools
+description=Server adapters extensions for use with the JST server tools
 
 # "copyright" property - text of the "Feature Update Copyright"
 copyright=\
diff --git a/features/org.eclipse.jst.server_adapters.ext.feature/feature.xml b/features/org.eclipse.jst.server_adapters.ext.feature/feature.xml
index 5d38b1e..7449cf0 100644
--- a/features/org.eclipse.jst.server_adapters.ext.feature/feature.xml
+++ b/features/org.eclipse.jst.server_adapters.ext.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.server_adapters.ext.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.jst.server_adapters.ext.sdk.feature/feature.xml b/features/org.eclipse.jst.server_adapters.ext.sdk.feature/feature.xml
index a4dbdc1..b23b98e 100644
--- a/features/org.eclipse.jst.server_adapters.ext.sdk.feature/feature.xml
+++ b/features/org.eclipse.jst.server_adapters.ext.sdk.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.server_adapters.ext.sdk.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.jst.server_adapters.ext_tests.feature/feature.xml b/features/org.eclipse.jst.server_adapters.ext_tests.feature/feature.xml
index 6f75224..693d103 100644
--- a/features/org.eclipse.jst.server_adapters.ext_tests.feature/feature.xml
+++ b/features/org.eclipse.jst.server_adapters.ext_tests.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.server_adapters.ext_tests.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.jst.server_adapters.sdk.feature/feature.xml b/features/org.eclipse.jst.server_adapters.sdk.feature/feature.xml
index b0cbdf2..cd68c48 100644
--- a/features/org.eclipse.jst.server_adapters.sdk.feature/feature.xml
+++ b/features/org.eclipse.jst.server_adapters.sdk.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jst.server_adapters.sdk.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
@@ -19,7 +19,6 @@
       %license
    </license>
 
-
    <includes
          id="org.eclipse.jst.server_adapters.feature"
          version="0.0.0"/>
diff --git a/features/org.eclipse.wst.server_core.feature/feature.xml b/features/org.eclipse.wst.server_core.feature/feature.xml
index 56a1c0d..59a58d2 100644
--- a/features/org.eclipse.wst.server_core.feature/feature.xml
+++ b/features/org.eclipse.wst.server_core.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.server_core.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.wst.server_sdk.feature/feature.xml b/features/org.eclipse.wst.server_sdk.feature/feature.xml
index ff23c94..0f525b9 100644
--- a/features/org.eclipse.wst.server_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.server_sdk.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.server_sdk.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.wst.server_tests.feature/feature.xml b/features/org.eclipse.wst.server_tests.feature/feature.xml
index 2ea198c..a542ecf 100644
--- a/features/org.eclipse.wst.server_tests.feature/feature.xml
+++ b/features/org.eclipse.wst.server_tests.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.server_tests.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/features/org.eclipse.wst.server_ui.feature/feature.xml b/features/org.eclipse.wst.server_ui.feature/feature.xml
index 11d1486..63e63f5 100644
--- a/features/org.eclipse.wst.server_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.server_ui.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.server_ui.feature"
       label="%featureName"
-      version="3.3.0.qualifier"
+      version="3.3.1.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="1.0.0.qualifier">
diff --git a/plugins/org.eclipse.jst.server.generic.jboss/build.properties b/plugins/org.eclipse.jst.server.generic.jboss/build.properties
index 6271748..a57ae49 100644
--- a/plugins/org.eclipse.jst.server.generic.jboss/build.properties
+++ b/plugins/org.eclipse.jst.server.generic.jboss/build.properties
@@ -15,5 +15,6 @@
                icons/,\
                buildfiles/,\
                genericjboss.jar              
+src.includes = build.properties
 source.genericjboss.jar = servers/
 jars.compile.order = genericjboss.jar
diff --git a/plugins/org.eclipse.jst.server.generic.jonas/build.properties b/plugins/org.eclipse.jst.server.generic.jonas/build.properties
index 179f110..39aa983 100644
--- a/plugins/org.eclipse.jst.server.generic.jonas/build.properties
+++ b/plugins/org.eclipse.jst.server.generic.jonas/build.properties
@@ -15,5 +15,6 @@
                servers/,\
                buildfiles/,\
                genericjonas.jar
+src.includes = build.properties
 jars.compile.order = genericjonas.jar
 source.genericjonas.jar = servers/
diff --git a/plugins/org.eclipse.jst.server.generic.oc4j/build.properties b/plugins/org.eclipse.jst.server.generic.oc4j/build.properties
index ca37d55..1a01b25 100644
--- a/plugins/org.eclipse.jst.server.generic.oc4j/build.properties
+++ b/plugins/org.eclipse.jst.server.generic.oc4j/build.properties
@@ -15,5 +15,6 @@
                plugin.properties,\
                servers/,\
                genericoc4j.jar
+src.includes = build.properties
 source.genericoc4j.jar = servers/
 jars.compile.order = genericoc4j.jar
diff --git a/plugins/org.eclipse.jst.server.installable/.cvsignore b/plugins/org.eclipse.jst.server.installable/.cvsignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/.cvsignore
@@ -0,0 +1 @@
+build.xml
diff --git a/plugins/org.eclipse.jst.server.installable/.project b/plugins/org.eclipse.jst.server.installable/.project
index c79c2dc..4d936fd 100644
--- a/plugins/org.eclipse.jst.server.installable/.project
+++ b/plugins/org.eclipse.jst.server.installable/.project
@@ -1,11 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-    <name>org.eclipse.jst.server.installable</name>
-    <comment></comment>
-    <projects>
-    </projects>
-    <buildSpec>
-    </buildSpec>
-    <natures>
-    </natures>
+	<name>org.eclipse.jst.server.installable</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6e5da88
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.jst.server.installable;singleton:=true
+Bundle-Name: %pluginName
+Bundle-Version: 1.5.202.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle:  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,2.0.0)"
diff --git a/plugins/org.eclipse.jst.server.installable/about.html b/plugins/org.eclipse.jst.server.installable/about.html
new file mode 100644
index 0000000..2199df3
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>June, 2008</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/plugins/org.eclipse.jst.server.installable/archived.txt b/plugins/org.eclipse.jst.server.installable/archived.txt
deleted file mode 100644
index 6fc1917..0000000
--- a/plugins/org.eclipse.jst.server.installable/archived.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This bundle was last used in WTP 3.1. 
-
-In WTP 3.2 the function was essentially moved to server.discovery 
-bundles where p2 is used to get/install server adapters. 
-
- 
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.installable/build.properties b/plugins/org.eclipse.jst.server.installable/build.properties
new file mode 100644
index 0000000..6ef25e0
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2005, 2006 Eteration A.S. and Gorkem Ercan.
+# 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: Gorkem Ercan - initial API and implementation
+###############################################################################
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties
+src.includes = build.properties
diff --git a/plugins/org.eclipse.jst.server.installable/plugin.properties b/plugins/org.eclipse.jst.server.installable/plugin.properties
new file mode 100644
index 0000000..c18370b
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/plugin.properties
@@ -0,0 +1,11 @@
+##################################################################################################
+# Copyright (c) 2005 Eteration A.S. and Gorkem Ercan. 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: Gorkem Ercan - initial API and implementation
+###################################################################################################
+pluginName=Installable server adapters
+providerName=Eclipse.org
+pluginDescription=Provides installable server adapters
diff --git a/plugins/org.eclipse.jst.server.installable/plugin.xml b/plugins/org.eclipse.jst.server.installable/plugin.xml
new file mode 100644
index 0000000..581a39e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.installable/plugin.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+  <extension point="org.eclipse.wst.server.core.installableServers">
+    <installableServer
+      id="org.apache.geronimo.generic.runtime.10"
+      featureId="org.apache.geronimo.feature"
+      featureVersion="1.2.0"
+      featureSite="http://www.apache.org/dist/geronimo/eclipse/updates/"/>
+    <installableServer
+      id="org.apache.geronimo.generic.runtime.10"
+      featureId="com.ibm.websphere.ce.feature"
+      featureVersion="1.1.0"
+      featureSite="http://download.boulder.ibm.com/ibmdl/pub/software/websphere/wasce/updates/"/>
+    <installableServer
+      id="com.pramati"
+      featureId="com.pramati.eclipse.feature"
+      featureVersion="1.0.0"
+      featureSite="http://www.pramati.com/downloads/eclipse/updates/"/>
+  </extension>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.internet.monitor.ui/META-INF/MANIFEST.MF
index a8f92b6..47073cc 100644
--- a/plugins/org.eclipse.wst.internet.monitor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.internet.monitor.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.internet.monitor.ui; singleton:=true
-Bundle-Version: 1.0.506.qualifier
+Bundle-Version: 1.0.507.qualifier
 Bundle-Activator: org.eclipse.wst.internet.monitor.ui.internal.MonitorUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -13,6 +13,6 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,1.1.0)"
+ org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
index 4c42aeb..b41b67a 100644
--- a/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.server.core; singleton:=true
-Bundle-Version: 1.1.302.qualifier
+Bundle-Version: 1.1.303.qualifier
 Bundle-Activator: org.eclipse.wst.server.core.internal.ServerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -18,6 +18,6 @@
  org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.update.core;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,2.0.0)";resolution:=optional,
- org.eclipse.wst.common.core;bundle-version="1.2.0"
+ org.eclipse.wst.common.core;bundle-version="[1.2.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
index 167c0cf..0975955 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/ServerUtil.java
@@ -407,8 +407,8 @@
 		}
 
 		while (ServerPlugin.isNameInUse(runtime.getOriginal(), name)) {
-			suffix++;
 			name = NLS.bind(Messages.defaultRuntimeName2, new String[] { typeName, suffix + "" });
+			suffix++;
 		}
 		runtime.setName(name);
 		return suffix;
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
index 70d6f7d..1e35827 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ResourceManager.java
@@ -399,11 +399,12 @@
 			return;
 		}
 
-		if (resourceChangeListener != null) {
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			if (workspace != null)
-				workspace.removeResourceChangeListener(resourceChangeListener);
-			
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		if (workspace != null && resourceChangeListener != null) {
+			workspace.removeResourceChangeListener(resourceChangeListener);
+		}
+
+		if (pcl != null) {
 			ServerPlugin.getInstance().getPluginPreferences().removePropertyChangeListener(pcl);
 		}
 		
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
index 58de85d..7f216b6 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Server.java
@@ -2322,8 +2322,6 @@
 		//serverState = wc.serverState;
 		delegate = wc.delegate;
 		
-		if (getServerState() == IServer.STATE_STARTED)
-			autoPublish();
 	}
 
 	protected void saveState(IMemento memento) {
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
index 02455b8..33bd10e 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerWorkingCopy.java
@@ -447,6 +447,9 @@
 			getWorkingCopyDelegate(monitor).saveConfiguration(monitor);
 		wch.setDirty(false);
 		
+		if (getServerState() == IServer.STATE_STARTED)
+			autoPublish();
+		
 		return server;
 	}
 
diff --git a/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF
index 2a6e6d1..5911b4a 100644
--- a/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.server.ui; singleton:=true
-Bundle-Version: 1.1.305.qualifier
+Bundle-Version: 1.1.306.qualifier
 Bundle-Activator: org.eclipse.wst.server.ui.internal.ServerUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -39,6 +39,6 @@
  org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,2.0.0)",
  org.eclipse.jface.text;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,2.0.0)";resolution:=optional,
- org.eclipse.ui.navigator;bundle-version="3.3.100"
+ org.eclipse.ui.navigator;bundle-version="[3.3.100,4.0.0)"
 Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.server.ui.internal.webbrowser"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorPart.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorPart.java
index 42d6d45..c43804e 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorPart.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorPart.java
@@ -23,6 +23,7 @@
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.part.EditorPart;
 import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.ui.internal.Trace;
 import org.eclipse.wst.server.ui.internal.editor.*;
 /**
  * An abstract server editor which implements the most common methods
@@ -303,7 +304,13 @@
 		Iterator iterator = getSections(id).iterator();
 		while (iterator.hasNext()) {
 			ServerEditorSection section = (ServerEditorSection) iterator.next();
-			section.createSection(parent);
+			try {
+				section.createSection(parent);
+			} catch (RuntimeException e) {
+				if (Trace.SEVERE) {
+					Trace.trace(Trace.STRING_SEVERE, "Failed to insert editor section: " + id + "\n" + e.getLocalizedMessage(), e);
+				}
+			}
 		}
 	}
 
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/DeleteServerDialog.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/DeleteServerDialog.java
index e57f9b8..648edfc 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/DeleteServerDialog.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/DeleteServerDialog.java
@@ -112,23 +112,27 @@
 		// prompt for stopping running servers
 		int size = runningServersList.size();
 		if (size > 0) {
-			checkDeleteRunning = new Button(composite, SWT.CHECK);
-			checkDeleteRunning.setText(Messages.deleteServerDialogRunningServer);
-			checkDeleteRunning.setSelection(true);
+			if (servers.length > 1) {
+				checkDeleteRunning = new Button(composite, SWT.CHECK);
+				checkDeleteRunning.setText(Messages.deleteServerDialogRunningServer);
+				checkDeleteRunning.setSelection(true);
+			}
 			
 			if (runningServerCanStop) {
 				checkDeleteRunningStop = new Button(composite, SWT.CHECK);
 				checkDeleteRunningStop.setText(Messages.deleteServerDialogRunningServerStop);
 				checkDeleteRunningStop.setSelection(true);
 				GridData data = new GridData();
-				data.horizontalIndent = 15;
-				checkDeleteRunningStop.setLayoutData(data);
-				
-				checkDeleteRunning.addSelectionListener(new SelectionAdapter() {
-					public void widgetSelected(SelectionEvent e) {
-						checkDeleteRunningStop.setEnabled(checkDeleteRunning.getSelection());
-					}
-				});
+				if (checkDeleteRunning != null) {
+					// Only indent the checkbox if the delete running servers checkbox is available.
+					data.horizontalIndent = 15;
+					checkDeleteRunning.addSelectionListener(new SelectionAdapter() {
+						public void widgetSelected(SelectionEvent e) {
+							checkDeleteRunningStop.setEnabled(checkDeleteRunning.getSelection());
+						}
+					});
+				}
+				checkDeleteRunningStop.setLayoutData(data);				
 			}
 		}
 		
@@ -140,7 +144,7 @@
 	protected void buttonPressed(int buttonId) {
 		if (buttonId == OK) {
 			final boolean checked = (checkDeleteConfigs != null && checkDeleteConfigs.getSelection());
-			final boolean deleteRunning = (checkDeleteRunning != null && checkDeleteRunning.getSelection());
+			final boolean deleteRunning = (checkDeleteRunning == null || checkDeleteRunning.getSelection());
 			final boolean deleteRunningStop = (checkDeleteRunningStop != null && checkDeleteRunningStop.getSelection());
 			
 			Thread t = new Thread("Delete servers") {
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
index f4dbcec..2665029 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.java
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * Copyright (c) 2005, 2011 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
@@ -195,6 +195,7 @@
 	public static String wizNewServerSelect;
 	public static String wizNewServerManual;
 	public static String wizCheckRemoteSupport;
+	public static String wizEmptyHostName;
 	public static String wizSelectServerPreferred;
 	public static String wizNewServerExisting;
 	public static String wizNewServerRuntime;
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
index 0614651..fae6d5e 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2004, 2010 IBM Corporation and others.
+# Copyright (c) 2004, 2011 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
@@ -22,6 +22,7 @@
 wizNewServerRuntime=Server &runtime environment:
 wizNewServerRuntimeCreate=Create a new runtime environment
 wizCheckRemoteSupport=The currently selected server type does not support remote hosts
+wizEmptyHostName=Server's host name must be set.
 
 wizNewServerSelect=How do you want to select the server?
 wizNewServerExisting=Choose an e&xisting server
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Timer.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Timer.java
index ae6d51a..f6b1024 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Timer.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/Timer.java
@@ -36,11 +36,12 @@
 	/**
 	 * Runs the timer if it is stopped or updates the stop time directly
 	 * to effectively restart the timer.
+	 * only one command should be executed at a time. 
 	 */
 	public void runTimer(){
 		timerRunnable.setStopTime(System.currentTimeMillis() + delay);
 
-		if(!timerRunnable.isRunning()){
+		if(!timerRunnable.isRunning() && !timerRunnable.isScheduled()){
 			timerRunnable.setIsScheduled(true);
 			executor.execute(timerRunnable);
 		}
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/AbstractServerAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/AbstractServerAction.java
index 1899f54..06fd708 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/AbstractServerAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/AbstractServerAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2011 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
@@ -53,6 +53,10 @@
 
 	public void run() {
 		Iterator iterator = getStructuredSelection().iterator();
+		
+		if (!iterator.hasNext())
+			return;		
+		
 		Object obj = iterator.next();
 		if (obj instanceof IServer) {
 			IServer server = (IServer) obj;
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewServerWizardFragment.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewServerWizardFragment.java
index eb93cae..5747e58 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewServerWizardFragment.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/fragment/NewServerWizardFragment.java
@@ -165,9 +165,11 @@
 					return false;
 				}
 				
-				if(!supportsRemote && !SocketUtil.isLocalhost(manualComp.getCurrentHostname())){
+				if (manualComp.getCurrentHostname().trim().length() == 0){
 					isComplete = false;
-				}if (!manualComp.canSupportModule() ){
+				} else if(!supportsRemote && !SocketUtil.isLocalhost(manualComp.getCurrentHostname())){
+					isComplete = false;
+				} else if (!manualComp.canSupportModule() ){
 					isComplete = false;
 				}
 				else
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewManualServerComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewManualServerComposite.java
index 05765ee..8ac0da6 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewManualServerComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewManualServerComposite.java
@@ -95,7 +95,6 @@
 	protected String serverTypeId;
 	protected boolean includeIncompatible;
 	
-	protected String lastHostname;
 	protected HostnameComposite manualHostComp;
 	IHostnameSelectionListener hostnameListener;
 	protected Label hostnameLabel;
@@ -181,7 +180,6 @@
 		
 		hostnameListener = 	new IHostnameSelectionListener() {
 			public void hostnameSelected(String selectedHostname) {
-				lastHostname = selectedHostname;
 				setHost(selectedHostname);
 			}
 	    };		
@@ -394,7 +392,9 @@
 	protected void handleHostnameChange(IServerType serverType) {
 
 		wizard.setMessage(null, IMessageProvider.NONE);
-		checkHostAndServerType(serverType);
+		if (!checkHostAndServerType(serverType)) {
+			return;// Host name validation failed, so there is no need to continue handling hostname change event			
+		}
 		loadServerImpl(serverType);
 		
 		if (serverName != null && !serverNameModified) {
@@ -418,12 +418,28 @@
 		}
 	}
 
-	protected void checkHostAndServerType(IServerType selectedServerType){
-		if(selectedServerType != null){
-			boolean supportsRemote = selectedServerType.supportsRemoteHosts();
-			if(!supportsRemote && !SocketUtil.isLocalhost(hostname.getText()))
-				wizard.setMessage(NLS.bind(Messages.wizCheckRemoteSupport, new Object[0]), IMessageProvider.ERROR);
+	/**
+	 * Validates the server's host name<br/>
+	 * @param selectedServerType
+	 * @return The results of validation: <br/>
+	 * <b>false</b> in case when the selected server type does not support remote host and the field "hostname" is not recognized as localhost one.  This method will also return false on an invalid server type.<br/> 
+	 * <b>true</b> in any other case   
+	 */
+	protected boolean checkHostAndServerType(IServerType selectedServerType){
+		if(selectedServerType == null){
+			return false;
 		}
+		boolean supportsRemote = selectedServerType.supportsRemoteHosts();
+		if (hostname.getText().trim().length() == 0){
+			wizard.setMessage(NLS.bind(Messages.wizEmptyHostName, new Object[0]), IMessageProvider.ERROR);
+			return false;
+		}
+		if(!supportsRemote && !SocketUtil.isLocalhost(hostname.getText())) {
+			wizard.setMessage(NLS.bind(Messages.wizCheckRemoteSupport, new Object[0]), IMessageProvider.ERROR);
+			return false;
+		}
+		
+		return true;
 	}
 	
 	/**
@@ -609,6 +625,9 @@
 				serverName.setText(server.getName());
 				updatingServerName = false;
 			}
+			else {
+				server.setName(serverName.getText());
+			}
 			// Validate if selected module is supported with the selected runtime
 			wizard.setMessage(null, IMessageProvider.NONE);
 			if( module!=null ){
@@ -746,8 +765,13 @@
 	protected void hostnameChanged(String newHost) {
 		if (newHost == null)
 			return;
-		if (newHost.equals(host))
-			return;
+		/*
+		 * Bug 349434, with the fix in Timer.runTimer, the chance that a new 
+		 * host name is the same as the host name will be very rare. In some  
+		 * cases, it still needs to go through processes such as loadServerImpl. 
+		 * It doesn't worth to handle it differently. Therefore, we are not checking 
+		 * for the same host name in here.
+		 */
 
 		host = newHost;
 		hostnameListener.hostnameSelected(host);
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewServerComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewServerComposite.java
index 670ba91..62a3190 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewServerComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/NewServerComposite.java
@@ -487,7 +487,7 @@
 
 		GridData data = new GridData(GridData.FILL_BOTH);
 		data.horizontalSpan = 3;
-		data.heightHint = 325;
+		data.heightHint = 360;
 		manualComp.setLayoutData(data);
 	}