[179592] Refresh classpath container
diff --git a/plugins/org.eclipse.jst.server.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.server.core/META-INF/MANIFEST.MF
index f474d3f..1d173ca 100644
--- a/plugins/org.eclipse.jst.server.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.server.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.server.core; singleton:=true
-Bundle-Version: 1.0.105.qualifier
+Bundle-Version: 1.0.106.qualifier
 Bundle-Activator: org.eclipse.jst.server.core.internal.JavaServerPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
index 474db92..95f90c9 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
+++ b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
@@ -19,13 +19,18 @@
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.IAccessRule;
 import org.eclipse.jdt.core.IClasspathAttribute;
+import org.eclipse.jdt.core.IClasspathContainer;
 import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jst.server.core.internal.IMemento;
 import org.eclipse.jst.server.core.internal.JavaServerPlugin;
+import org.eclipse.jst.server.core.internal.RuntimeClasspathContainer;
 import org.eclipse.jst.server.core.internal.Trace;
 import org.eclipse.jst.server.core.internal.XMLMemento;
 import org.eclipse.wst.server.core.IRuntime;
@@ -61,6 +66,8 @@
 
 	private Map runtimePathMap = new HashMap();
 
+	private Map previousClasspath = new HashMap();
+
 	public RuntimeClasspathProviderDelegate() {
 		// default constructor
 	}
@@ -150,6 +157,25 @@
 			}
 		}
 		
+		String key = project.getName() + "/" + runtime.getId();
+		IClasspathEntry[] previousEntries = (IClasspathEntry[]) previousClasspath.get(key);
+		
+		if ((previousEntries == null && entries != null) || (previousEntries != null && entries == null)
+				|| (previousEntries != null && entries != null && previousEntries.length != entries.length)) {
+			Trace.trace(Trace.FINEST, "Classpath update: " + key + " " + entries);
+			
+			IPath path = new Path(RuntimeClasspathContainer.SERVER_CONTAINER);
+			path = path.append(extensionId).append(runtime.getId());
+			try {
+				IJavaProject javaProject = JavaCore.create(project);
+				JavaCore.setClasspathContainer(path, new IJavaProject[] { javaProject },
+						new IClasspathContainer[] { null }, new NullProgressMonitor());
+			} catch (JavaModelException jme) {
+				Trace.trace(Trace.WARNING, "Error updating classpath", jme);
+			}
+		}
+		previousClasspath.put(key, entries);
+		
 		return entries;
 	}