[185022] Remove JST references from HTTP server
diff --git a/plugins/org.eclipse.jst.server.core/.classpath b/plugins/org.eclipse.jst.server.core/.classpath
index 3d1822d..ce73933 100644
--- a/plugins/org.eclipse.jst.server.core/.classpath
+++ b/plugins/org.eclipse.jst.server.core/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="sjavacore/"/>
+	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.jst.server.core/build.properties b/plugins/org.eclipse.jst.server.core/build.properties
index 301bd68..27bddaa 100644
--- a/plugins/org.eclipse.jst.server.core/build.properties
+++ b/plugins/org.eclipse.jst.server.core/build.properties
@@ -18,4 +18,4 @@
                temp.folder/**
 src.includes = schema/,\
                component.xml
-source.. = sjavacore/
+source.. = src/
diff --git a/plugins/org.eclipse.jst.server.core/plugin.xml b/plugins/org.eclipse.jst.server.core/plugin.xml
index 43f3fc6..6a1a052 100644
--- a/plugins/org.eclipse.jst.server.core/plugin.xml
+++ b/plugins/org.eclipse.jst.server.core/plugin.xml
@@ -39,6 +39,8 @@
        id="org.eclipse.jst.server.core.runtimeType"
        name="%runtimeTypeName"
        description="%runtimeTypeDescription"
+       facetRuntimeComponent="org.eclipse.jst.server.core.runtimeType"
+       facetRuntimeVersion="1.0"
        class="org.eclipse.jst.server.core.internal.GenericRuntime">
        <moduleType
          types="jst.*"
@@ -137,12 +139,6 @@
     </supported>
   </extension>
 
-  <extension point="org.eclipse.wst.common.project.facet.core.runtimeBridges">
-    <bridge
-      id="org.eclipse.jst.server.core.default"
-      class="org.eclipse.jst.server.core.internal.RuntimeBridge"/>
-  </extension>
-
   <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
     <runtime-component-type
        id="org.eclipse.jst.server.core.runtimeType"/>
@@ -185,122 +181,10 @@
     </supported>
   </extension>
 
-  <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
-    <runtimeFacetMapping
-      runtimeTypeId="org.eclipse.jst.server.core.runtimeType"
-      runtime-component="org.eclipse.jst.server.core.runtimeType"
-      version="1.0"/>
+  <extension point="org.eclipse.wst.server.core.runtimeFacetComponentProviders">
+    <runtimeComponentProvider
+      id="org.eclipse.jst.server.core.JRERuntimeComponentProvider"
+      runtimeTypeIds="*"
+      class="org.eclipse.jst.server.core.internal.JRERuntimeComponentProvider"/>
   </extension>
-
-  <extension point="org.eclipse.wst.server.core.runtimeTypes">
-    <runtimeType
-       id="org.eclipse.jst.server.preview.runtime"
-       name="%previewRuntimeTypeName"
-       description="%previewRuntimeTypeDescription"
-       class="org.eclipse.jst.server.core.internal.preview.PreviewRuntime">
-       <moduleType
-         types="wst.web"
-         versions="1.0"/>
-       <moduleType
-         types="jst.web"
-         versions="2.2,2.3,2.4,2.5"/>
-       <moduleType
-         types="jst.utility"
-         versions="1.0"/>
-    </runtimeType>
-  </extension>
-
-  <extension point="org.eclipse.wst.server.core.serverTypes">
-     <serverType
-       id="org.eclipse.jst.server.preview.server"
-       name="%previewServerTypeName"
-       description="%previewServerTypeDescription"
-       supportsRemoteHosts="false"
-       runtime="true"
-       initialState="stopped"
-       hasConfiguration="false"
-       launchModes="run,debug,profile"
-       launchConfigId="org.eclipse.jst.server.core.preview.launchConfigurationType"
-       runtimeTypeId="org.eclipse.jst.server.preview.runtime"
-       class="org.eclipse.jst.server.core.internal.preview.PreviewServer"
-       behaviourClass="org.eclipse.jst.server.core.internal.preview.PreviewServerBehaviour"/>
-  </extension>
- 
-  <extension point="org.eclipse.jst.server.core.runtimeClasspathProviders">
-    <runtimeClasspathProvider
-      id="org.eclipse.jst.server.preview.runtimeTarget"
-      runtimeTypeIds="org.eclipse.jst.server.preview.runtime"
-      class="org.eclipse.jst.server.core.internal.preview.PreviewRuntimeClasspathProvider"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
-    <runtime-component-type
-       id="org.eclipse.jst.server.preview.runtime"/>
-
-    <runtime-component-version
-       type="org.eclipse.jst.server.preview.runtime"
-       version="1.0"/>
-
-    <adapter>
-      <runtime-component
-         id="org.eclipse.jst.server.preview.runtime"/>
-      <factory
-         class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/>
-      <type
-         class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/>
-    </adapter>
-
-    <supported>
-      <runtime-component
-         id="org.eclipse.jst.server.preview.runtime"
-         version="1.0"/>
-      <facet
-         id="wst.web"
-         version="1.0"/>
-      <facet
-         id="jst.web"
-         version="2.2,2.3,2.4,2.5"/>
-      <facet
-         id="jst.utility"
-         version="1.0"/>
-    </supported>
-  </extension>
-
-  <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
-    <runtimeFacetMapping
-      runtimeTypeId="org.eclipse.jst.server.preview.runtime"
-      runtime-component="org.eclipse.jst.server.preview.runtime"
-      version="1.0"/>
-  </extension>
-
-  <extension point="org.eclipse.debug.core.sourcePathComputers">
-     <sourcePathComputer
-        id="org.eclipse.jst.server.core.preview.sourcePathComputer"
-        class="org.eclipse.jst.server.core.internal.preview.PreviewSourcePathComputerDelegate"/>
-  </extension>
-
-  <extension point="org.eclipse.debug.core.launchConfigurationTypes">
-     <launchConfigurationType
-        id="org.eclipse.jst.server.core.preview.launchConfigurationType"
-        name="%previewLaunchConfigurationType"
-        delegate="org.eclipse.jst.server.core.internal.preview.PreviewLaunchConfigurationDelegate"
-        modes="run,debug,profile"
-        sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
-        sourcePathComputerId="org.eclipse.jst.server.core.preview.sourcePathComputer"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.server.core.launchableAdapters">
-    <launchableAdapter
-      id="org.eclipse.jst.server.core.preview.server"
-      class="org.eclipse.jst.server.core.internal.preview.PreviewLaunchableAdapterDelegate"/>
-  </extension>
-
-<!--
-<extension point="org.eclipse.wst.server.core.internalStartup">
-  <startup
-    id="org.eclipse.jst.server.core.startup"
-    class="org.eclipse.jst.server.core.internal.preview.PreviewStartup"/>
-</extension>
--->
-
 </plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java
deleted file mode 100644
index abb2395..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeBridge.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Konstantin Komissarchik - initial API and implementation
- *    IBM Corporation - Support for all server types
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.launching.IVMInstall;
-import org.eclipse.jdt.launching.IVMInstall2;
-import org.eclipse.jdt.launching.JavaRuntime;
-import org.eclipse.jst.server.core.IJavaRuntime;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
-import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
-import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.internal.Runtime;
-/**
- * 
- */
-public class RuntimeBridge implements IRuntimeBridge {
-	protected static final String CLASSPATH = "classpath";
-
-	protected static Map mappings = new HashMap();
-
-	static {
-		initialize();
-	}
-
-	private static void addMapping(String id, String id2, String version) {
-		ArrayList list = null;
-		try {
-			list = (ArrayList) mappings.get(id);
-		} catch (Exception e) {
-			// ignore
-		}
-		
-		if (list == null)
-			list = new ArrayList(2);
-		
-		try {
-			list.add(RuntimeManager.getRuntimeComponentType(id2).getVersion(version));
-			mappings.put(id, list);
-		} catch (Exception e) {
-			// ignore
-		}
-	}
-
-	private static void initialize() {
-		RuntimeFacetMapping[] rfms = JavaServerPlugin.getRuntimeFacetMapping();
-		int size = rfms.length;
-		for (int i = 0; i < size; i++)
-			addMapping(rfms[i].getRuntimeTypeId(), rfms[i].getRuntimeComponent(), rfms[i].getVersion());
-
-		// generic runtimes
-		addMapping("org.eclipse.jst.server.generic.runtime.jboss323", "org.eclipse.jst.server.generic.runtime.jboss", "3.2.3");
-
-		addMapping("org.eclipse.jst.server.generic.runtime.jonas4", "org.eclipse.jst.server.generic.runtime.jonas", "4.0");
-		
-		addMapping("org.eclipse.jst.server.generic.runtime.oracle1013", "org.eclipse.jst.server.generic.runtime.oracle", "10.1.3");
-		
-		addMapping("org.eclipse.jst.server.generic.runtime.websphere.6", "org.eclipse.jst.server.generic.runtime.websphere", "6.0");
-	}
-
-	public Set getExportedRuntimeNames() throws CoreException {
-		IRuntime[] runtimes = ServerCore.getRuntimes();
-		Set result = new HashSet(runtimes.length);
-		
-		for (int i = 0; i < runtimes.length; i++) {
-			IRuntime runtime = runtimes[i];
-			IRuntimeType runtimeType = runtime.getRuntimeType();
-			if (runtimeType != null && mappings.containsKey(runtimeType.getId())) {
-				result.add(runtime.getName());
-			}
-		}
-		
-		return result;
-	}
-
-	public IStub bridge(String name) throws CoreException {
-		if (name == null)
-			throw new IllegalArgumentException();
-		
-		IRuntime[] runtimes = ServerCore.getRuntimes();
-		int size = runtimes.length;
-		for (int i = 0; i < size; i++) {
-			if (runtimes[i].getName().equals(name))
-				return new Stub(runtimes[i]);
-		}
-		return null;
-	}
-
-	private static class Stub implements IStub {
-		private IRuntime runtime;
-		protected int timestamp = -1;
-		protected IVMInstall vmInstall;
-		protected String jvmver;
-
-		public Stub(IRuntime runtime) {
-			this.runtime = runtime;
-		}
-
-		public List getRuntimeComponents() {
-			List components = new ArrayList(2);
-			if (runtime == null)
-				return components;
-			
-			// define server runtime component
-			Map properties = new HashMap(5);
-			if (runtime.getLocation() != null)
-				properties.put("location", runtime.getLocation().toPortableString());
-			else
-				properties.put("location", "");
-			properties.put("name", runtime.getName());
-			properties.put("type", runtime.getRuntimeType().getName());
-			properties.put("id", runtime.getId());
-			
-			RuntimeClasspathProviderWrapper rcpw = JavaServerPlugin.findRuntimeClasspathProvider(runtime.getRuntimeType());
-			if (rcpw != null) {
-				IPath path = new Path(RuntimeClasspathContainer.SERVER_CONTAINER);
-				path = path.append(rcpw.getId()).append(runtime.getId());
-				properties.put(CLASSPATH, path.toPortableString());
-			}
-			
-			String typeId = runtime.getRuntimeType().getId();
-			if (mappings.containsKey(typeId)) {
-				ArrayList list = (ArrayList) mappings.get(typeId);
-				int size = list.size();
-				for (int i = 0; i < size; i++) {
-					IRuntimeComponentVersion mapped = (IRuntimeComponentVersion) list.get(i);
-					components.add(RuntimeManager.createRuntimeComponent(mapped, properties));
-				}
-			}
-			
-			// define JRE component
-			IJavaRuntime javaRuntime = (IJavaRuntime) runtime.loadAdapter(IJavaRuntime.class, null);
-			if (javaRuntime != null) {
-				if (timestamp != ((Runtime) runtime).getTimestamp()) {
-					vmInstall = null;
-					jvmver = null;
-					timestamp = ((Runtime) runtime).getTimestamp();
-				}
-				if (vmInstall == null)
-					vmInstall = javaRuntime.getVMInstall(); 
-				
-				if (jvmver == null) {
-					IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall;
-					if (vmInstall2 != null)
-						jvmver = vmInstall2.getJavaVersion();
-				}
-				
-				String vmInstallName;
-				if (vmInstall != null)
-					vmInstallName = vmInstall.getName();
-				else
-					vmInstallName = "Unknown";
-				
-				IRuntimeComponentVersion rcv = null;
-				if (vmInstall == null) {
-					// JRE couldn't be found - assume 6.0 for now
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
-				} else if (jvmver == null) {
-					Trace.trace(Trace.WARNING, "Could not determine VM version for: " + vmInstallName);
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
-				} else if (jvmver.startsWith("1.3"))
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.3");
-				else if (jvmver.startsWith("1.4"))
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
-				else if (jvmver.startsWith("1.5") || jvmver.startsWith("5.0"))
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
-				else if (jvmver.startsWith("1.6") || jvmver.startsWith("6.0"))
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
-				else {
-					Trace.trace(Trace.WARNING, "Invalid Java version: " + vmInstallName + ", " + jvmver);
-					rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
-				}
-				
-				if (rcv != null) {
-					properties = new HashMap(3);
-					if (vmInstallName != null)
-						properties.put("name", vmInstallName);
-					else
-						properties.put("name", "-");
-					
-					if (vmInstall == null) {
-						// no classpath
-					} else if (vmInstall == null || javaRuntime.isUsingDefaultJRE())
-						properties.put(CLASSPATH, new Path(JavaRuntime.JRE_CONTAINER).toPortableString());
-					else
-						properties.put(CLASSPATH, JavaRuntime.newJREContainerPath(vmInstall).toPortableString());
-					components.add(RuntimeManager.createRuntimeComponent(rcv, properties));
-				}
-			}
-			
-			RuntimeComponentProviderWrapper componentProvider = JavaServerPlugin.findRuntimeComponentProvider(runtime.getRuntimeType());
-			if (componentProvider != null) {
-				List list = componentProvider.getComponents(runtime);
-				if (list != null)
-					components.addAll(list);
-			}
-			
-			return components;
-		}
-
-		public Map getProperties() {
-			if (runtime == null)
-				return new HashMap(0);
-			return Collections.singletonMap("id", runtime.getId());
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PingThread.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PingThread.java
deleted file mode 100644
index cc64b1c..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PingThread.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.io.FileNotFoundException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.eclipse.jst.server.core.internal.Trace;
-import org.eclipse.wst.server.core.IServer;
-/**
- * Thread used to ping server to test when it is started.
- */
-public class PingThread {
-	// delay before pinging starts
-	private static final int PING_DELAY = 2000;
-
-	// delay between pings
-	private static final int PING_INTERVAL = 250;
-
-	// maximum number of pings before giving up
-	private int maxPings = 40;
-
-	private boolean stop = false;
-	private String url;
-	private IServer server;
-	private PreviewServerBehaviour behaviour;
-
-	/**
-	 * Create a new PingThread.
-	 * 
-	 * @param server
-	 * @param url
-	 * @param behaviour
-	 */
-	public PingThread(IServer server, String url, PreviewServerBehaviour behaviour) {
-		super();
-		this.server = server;
-		this.url = url;
-		this.behaviour = behaviour;
-		Thread t = new Thread("Preview Ping Thread") {
-			public void run() {
-				ping();
-			}
-		};
-		t.setDaemon(true);
-		t.start();
-	}
-
-	/**
-	 * Ping the server until it is started. Then set the server
-	 * state to STATE_STARTED.
-	 */
-	protected void ping() {
-		int count = 0;
-		try {
-			Thread.sleep(PING_DELAY);
-		} catch (Exception e) {
-			// ignore
-		}
-		while (!stop) {
-			try {
-				if (count == maxPings) {
-					try {
-						server.stop(false);
-					} catch (Exception e) {
-						Trace.trace(Trace.FINEST, "Ping: could not stop server");
-					}
-					stop = true;
-					break;
-				}
-				count++;
-				
-				Trace.trace(Trace.FINEST, "Ping: pinging " + count);
-				URL pingUrl = new URL(url);
-				URLConnection conn = pingUrl.openConnection();
-				((HttpURLConnection)conn).getResponseCode();
-	
-				// ping worked - server is up
-				if (!stop) {
-					Trace.trace(Trace.FINEST, "Ping: success");
-					Thread.sleep(200);
-					behaviour.setServerStarted();
-				}
-				stop = true;
-			} catch (FileNotFoundException fe) {
-				try {
-					Thread.sleep(200);
-				} catch (Exception e) {
-					// ignore
-				}
-				behaviour.setServerStarted();
-				stop = true;
-			} catch (Exception e) {
-				Trace.trace(Trace.FINEST, "Ping: failed");
-				// pinging failed
-				if (!stop) {
-					try {
-						Thread.sleep(PING_INTERVAL);
-					} catch (InterruptedException e2) {
-						// ignore
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Tell the pinging to stop.
-	 */
-	public void stop() {
-		Trace.trace(Trace.FINEST, "Ping: stopping");
-		stop = true;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchConfigurationDelegate.java
deleted file mode 100644
index 03e12fb..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.io.File;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.jdt.launching.*;
-import org.eclipse.jst.server.core.ServerProfilerDelegate;
-import org.eclipse.jst.server.core.internal.JavaServerPlugin;
-import org.eclipse.jst.server.core.internal.Trace;
-
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerUtil;
-import org.osgi.framework.Bundle;
-/**
- * 
- */
-public class PreviewLaunchConfigurationDelegate extends AbstractJavaLaunchConfigurationDelegate {
-	private static final String[] REQUIRED_BUNDLE_IDS = new String[] {
-		"org.eclipse.core.runtime",
-		"org.apache.commons.logging",
-		"javax.servlet",
-		"javax.servlet.jsp",
-		"org.mortbay.jetty",
-		"org.eclipse.wst.server.preview"
-	};
-
-	private static final String MAIN_CLASS = "org.eclipse.wst.server.preview.internal.PreviewStarter";
-
-	public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
-		IServer server = ServerUtil.getServer(configuration);
-		if (server == null) {
-			Trace.trace(Trace.FINEST, "Launch configuration could not find server");
-			// throw CoreException();
-			return;
-		}
-		
-		PreviewServerBehaviour previewServer = (PreviewServerBehaviour) server.loadAdapter(PreviewServerBehaviour.class, null);
-		
-		int size = REQUIRED_BUNDLE_IDS.length;
-		String[] jars = new String[size];
-		for (int i = 0; i < size; i++) {
-			Bundle b = Platform.getBundle(REQUIRED_BUNDLE_IDS[i]);
-			IPath path = null;
-			if (b != null)
-				path = PreviewRuntime.getJarredPluginPath(b);
-			if (path == null)
-				throw new CoreException(new Status(IStatus.ERROR, JavaServerPlugin.PLUGIN_ID, "Could not find required bundle " + REQUIRED_BUNDLE_IDS[i]));
-			jars[i] = path.toOSString();
-		}
-		
-		if (new File(jars[5] + "bin").exists())
-			jars[5] = jars[5] + "bin";
-		
-		IVMInstall vm = verifyVMInstall(configuration);
-		
-		IVMRunner runner = vm.getVMRunner(mode);
-		if (runner == null)
-			runner = vm.getVMRunner(ILaunchManager.RUN_MODE);
-		
-		File workingDir = verifyWorkingDirectory(configuration);
-		String workingDirName = null;
-		if (workingDir != null)
-			workingDirName = workingDir.getAbsolutePath();
-		
-		// Program & VM args
-		String pgmArgs = previewServer.getTempDirectory().append("preview.xml").toOSString(); 
-			//getProgramArguments(configuration);
-		String vmArgs = getVMArguments(configuration);
-		String[] envp = getEnvironment(configuration);
-		
-		ExecutionArguments execArgs = new ExecutionArguments(vmArgs, pgmArgs);
-		
-		// VM-specific attributes
-		Map vmAttributesMap = getVMSpecificAttributesMap(configuration);
-		
-		// Classpath
-		String[] classpath2 = getClasspath(configuration);
-		String[] classpath = new String[classpath2.length + REQUIRED_BUNDLE_IDS.length];
-		System.arraycopy(jars, 0, classpath, 0, REQUIRED_BUNDLE_IDS.length);
-		System.arraycopy(classpath2, 0, classpath, REQUIRED_BUNDLE_IDS.length, classpath2.length);
-		
-		// Create VM config
-		VMRunnerConfiguration runConfig = new VMRunnerConfiguration(MAIN_CLASS, classpath);
-		runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
-		runConfig.setVMArguments(execArgs.getVMArgumentsArray());
-		runConfig.setWorkingDirectory(workingDirName);
-		runConfig.setEnvironment(envp);
-		runConfig.setVMSpecificAttributesMap(vmAttributesMap);
-		
-		// Bootpath
-		String[] bootpath = getBootpath(configuration);
-		if (bootpath != null && bootpath.length > 0)
-			runConfig.setBootClassPath(bootpath);
-		
-		setDefaultSourceLocator(launch, configuration);
-		
-		// Launch the configuration
-		previewServer.setupLaunch(launch, mode, monitor);
-		
-		if (ILaunchManager.PROFILE_MODE.equals(mode))
-			ServerProfilerDelegate.configureProfiling(launch, vm, runConfig, monitor);
-		
-		try {
-			runner.run(runConfig, launch, monitor);
-			previewServer.setProcess(launch.getProcesses()[0]);
-		} catch (Exception e) {
-			// ignore - process failed
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchableAdapterDelegate.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchableAdapterDelegate.java
deleted file mode 100644
index e83a75a..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewLaunchableAdapterDelegate.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jst.server.core.internal.Trace;
-import org.eclipse.wst.server.core.IModuleArtifact;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.model.LaunchableAdapterDelegate;
-import org.eclipse.wst.server.core.util.HttpLaunchable;
-import org.eclipse.wst.server.core.util.WebResource;
-
-public class PreviewLaunchableAdapterDelegate extends LaunchableAdapterDelegate {
-	/*
-	 * @see LaunchableAdapterDelegate#getLaunchable(IServer, IModuleArtifact)
-	 */
-	public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) throws CoreException {
-		if (server == null || moduleArtifact == null)
-			return null;
-		
-		PreviewServer server2 = (PreviewServer) server.loadAdapter(PreviewServer.class, null);
-		if (server2 == null)
-			return null;
-		
-		try {
-			URL url = server2.getModuleRootURL(moduleArtifact.getModule());
-			
-			if (moduleArtifact instanceof WebResource) {
-				WebResource resource = (WebResource) moduleArtifact;
-				String path = resource.getPath().toString();
-				
-				if (path.startsWith("/"))
-					path = path.substring(1);
-				url = new URL(url.toExternalForm() + "/" + path);
-			}
-			return new HttpLaunchable(url);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error in launchable adapter", e);
-		}
-		
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntime.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntime.java
deleted file mode 100644
index a9214df..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntime.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jdt.launching.IVMInstall;
-import org.eclipse.jdt.launching.IVMInstallType;
-import org.eclipse.jdt.launching.JavaRuntime;
-import org.eclipse.jst.server.core.IJavaRuntime;
-import org.eclipse.jst.server.core.internal.JavaServerPlugin;
-import org.eclipse.jst.server.core.internal.Messages;
-import org.eclipse.wst.server.core.model.RuntimeDelegate;
-import org.osgi.framework.Bundle;
-/**
- * 
- */
-public class PreviewRuntime extends RuntimeDelegate implements IJavaRuntime {
-	public static final String ID = "org.eclipse.jst.server.preview.runtime";
-
-	protected static final String PROP_VM_INSTALL_TYPE_ID = "vm-install-type-id";
-	protected static final String PROP_VM_INSTALL_ID = "vm-install-id";
-
-	/**
-	 * Create a new preview runtime.
-	 */
-	public PreviewRuntime() {
-		// do nothing
-	}
-
-	/**
-	 * Returns the path that corresponds to the specified bundle.
-	 * 
-	 * @return a path
-	 */
-	protected static Path getPluginPath(Bundle bundle) {
-		try {
-			URL installURL = bundle.getEntry("/");
-			URL localURL = FileLocator.toFileURL(installURL);
-			return new Path(localURL.getFile());
-		} catch (IOException ioe) {
-			return null;
-		}
-	}
-
-	protected static IPath getJarredPluginPath(Bundle bundle) {
-		Path runtimeLibFullPath = null;
-		String jarPluginLocation = bundle.getLocation().substring(7);
-		
-		// handle case where jars are installed outside of eclipse installation
-		Path jarPluginPath = new Path(jarPluginLocation);
-		if (jarPluginPath.isAbsolute())
-			runtimeLibFullPath = jarPluginPath;
-		// handle normal case where all plugins under eclipse install
-		else {
-			int ind = jarPluginLocation.lastIndexOf(":");
-			if (ind > 0)
-				jarPluginLocation = jarPluginLocation.substring(ind+1);
-			
-			String installPath = Platform.getInstallLocation().getURL().getPath();
-			runtimeLibFullPath = new Path(installPath+"/"+jarPluginLocation);
-		}
-		return runtimeLibFullPath;
-	}
-
-	protected String getVMInstallTypeId() {
-		return getAttribute(PROP_VM_INSTALL_TYPE_ID, (String)null);
-	}
-
-	protected String getVMInstallId() {
-		return getAttribute(PROP_VM_INSTALL_ID, (String)null);
-	}
-
-	/**
-	 * @see RuntimeDelegate#setDefaults(IProgressMonitor)
-	 */
-	public void setDefaults(IProgressMonitor monitor) {
-		getRuntimeWorkingCopy().setLocation(new Path(""));
-	}
-
-	/**
-	 * Returns <code>true</code> if the runtime is using the default JRE.
-	 * 
-	 * @return <code>true</code> if the runtime is using the default JRE,
-	 *    and <code>false</code> otherwise
-	 */
-	public boolean isUsingDefaultJRE() {
-		return getVMInstallTypeId() == null;
-	}
-
-	public IVMInstall getVMInstall() {
-		if (getVMInstallTypeId() == null)
-			return JavaRuntime.getDefaultVMInstall();
-		try {
-			IVMInstallType vmInstallType = JavaRuntime.getVMInstallType(getVMInstallTypeId());
-			IVMInstall[] vmInstalls = vmInstallType.getVMInstalls();
-			int size = vmInstalls.length;
-			String id = getVMInstallId();
-			for (int i = 0; i < size; i++) {
-				if (id.equals(vmInstalls[i].getId()))
-					return vmInstalls[i];
-			}
-		} catch (Exception e) {
-			// ignore
-		}
-		return null;
-	}
-
-	/**
-	 * @see RuntimeDelegate#validate()
-	 */
-	public IStatus validate() {
-		IStatus status = super.validate();
-		if (!status.isOK())
-			return status;
-		
-		if (getVMInstall() == null)
-			return new Status(IStatus.ERROR, JavaServerPlugin.PLUGIN_ID, 0, Messages.errorJRE, null);
-		
-		return Status.OK_STATUS;
-	}
-
-	public void setVMInstall(IVMInstall vmInstall) {
-		if (vmInstall == null) {
-			setVMInstall(null, null);
-		} else
-			setVMInstall(vmInstall.getVMInstallType().getId(), vmInstall.getId());
-	}
-
-	protected void setVMInstall(String typeId, String id) {
-		if (typeId == null)
-			setAttribute(PROP_VM_INSTALL_TYPE_ID, (String)null);
-		else
-			setAttribute(PROP_VM_INSTALL_TYPE_ID, typeId);
-		
-		if (id == null)
-			setAttribute(PROP_VM_INSTALL_ID, (String)null);
-		else
-			setAttribute(PROP_VM_INSTALL_ID, id);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntimeClasspathProvider.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntimeClasspathProvider.java
deleted file mode 100644
index 2c8fe9b..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewRuntimeClasspathProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jst.server.core.RuntimeClasspathProviderDelegate;
-
-import org.eclipse.wst.server.core.IRuntime;
-import org.osgi.framework.Bundle;
-/**
- * 
- */
-public class PreviewRuntimeClasspathProvider extends RuntimeClasspathProviderDelegate {
-	private static final String[] REQUIRED_BUNDLE_IDS = new String[] {
-		"javax.servlet",
-		"javax.servlet.jsp"
-	};
-
-	/** (non-Javadoc)
-	 * @see RuntimeClasspathProviderDelegate#resolveClasspathContainer(IProject, IRuntime)
-	 */
-	public IClasspathEntry[] resolveClasspathContainer(IProject project, IRuntime runtime) {
-		List list = new ArrayList();
-		
-		int size = REQUIRED_BUNDLE_IDS.length;
-		for (int i = 0; i < size; i++) {
-			Bundle b = Platform.getBundle(REQUIRED_BUNDLE_IDS[i]);
-			IPath path = PreviewRuntime.getJarredPluginPath(b);
-			if (path != null)
-				list.add(JavaCore.newLibraryEntry(path, null, null));
-		}
-		
-		return (IClasspathEntry[])list.toArray(new IClasspathEntry[list.size()]);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServer.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServer.java
deleted file mode 100644
index 1a8e2c2..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServer.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.server.core.IWebModule;
-import org.eclipse.jst.server.core.internal.JavaServerPlugin;
-import org.eclipse.jst.server.core.internal.Messages;
-import org.eclipse.jst.server.core.internal.Trace;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerType;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.model.IURLProvider;
-import org.eclipse.wst.server.core.model.ServerDelegate;
-import org.eclipse.wst.server.core.util.IStaticWeb;
-/**
- * Generic HTTP server.
- */
-public class PreviewServer extends ServerDelegate implements IURLProvider {
-	public static final String ID = "org.eclipse.jst.server.preview.server";
-
-	public static final String PROPERTY_PORT = "port";
-
-	/**
-	 * PreviewServer.
-	 */
-	public PreviewServer() {
-		super();
-	}
-
-	protected void initialize() {
-		// do nothing
-	}
-
-	public PreviewRuntime getPreviewRuntime() {
-		if (getServer().getRuntime() == null)
-			return null;
-		
-		return (PreviewRuntime) getServer().getRuntime().loadAdapter(PreviewRuntime.class, null);
-	}
-
-	/**
-	 * Return the root URL of this module.
-	 * 
-	 * @param module a module
-	 * @return java.net.URL
-	 */
-	public URL getModuleRootURL(IModule module) {
-		try {
-			String base = "http://localhost";
-			
-			int port = getPort();
-			URL url = null;
-			if (port == 80)
-				url = new URL(base + "/");
-			else
-				url = new URL(base + ":" + port + "/");
-			
-			String type = module.getModuleType().getId();
-			if ("wst.web".equals(type)) {
-				IStaticWeb staticWeb = (IStaticWeb) module.loadAdapter(IStaticWeb.class, null);
-				return new URL(url, staticWeb.getContextRoot());
-			} else if ("jst.web".equals(type)) {
-				IWebModule webModule = (IWebModule) module.loadAdapter(IWebModule.class, null);
-				return new URL(url, webModule.getContextRoot());
-			}
-			return url;
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Could not get root URL", e);
-			return null;
-		}
-	}
-
-	/*
-	 * Returns the child module(s) of this module.
-	 */
-	public IModule[] getChildModules(IModule[] module) {
-		return new IModule[0];
-	}
-
-	/*
-	 * Returns the root module(s) of this module.
-	 */
-	public IModule[] getRootModules(IModule module) throws CoreException {
-		return new IModule[] { module };
-	}
-
-	/**
-	 * Returns true if the given project is supported by this server, and false
-	 * otherwise.
-	 * 
-	 * @param add modules
-	 * @param remove modules
-	 * @return the status
-	 */
-	public IStatus canModifyModules(IModule[] add, IModule[] remove) {
-		return new Status(IStatus.OK, JavaServerPlugin.PLUGIN_ID, 0, Messages.canModifyModules, null);
-	}
-
-	public ServerPort[] getServerPorts() {
-		int port = getPort();
-		ServerPort[] ports = { new ServerPort("http", Messages.httpPort, port, "http") };
-		return ports;
-	}
-
-	public int getPort() {
-		return getAttribute(PreviewServer.PROPERTY_PORT, 8080);
-	}
-
-	public void setPort(int port) {
-		setAttribute(PreviewServer.PROPERTY_PORT, port);
-	}
-
-	public static IServer createPreviewServer(String serverName) {
-		try {
-			NullProgressMonitor monitor = new NullProgressMonitor();
-			IRuntimeType runtimeType = ServerCore.findRuntimeType(PreviewRuntime.ID);
-			IRuntimeWorkingCopy runtimeCopy = runtimeType.createRuntime(PreviewRuntime.ID, monitor);
-			IRuntime runtime = runtimeCopy.save(true, monitor);
-			
-			IServerType serverType = ServerCore.findServerType(ID);
-			IServerWorkingCopy workingCopy = serverType.createServer(ID, null, runtime, monitor);
-			workingCopy.setName(serverName);
-			workingCopy.setHost("localhost");
-			return workingCopy.save(true, monitor);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error creating server", e);
-		}
-		
-		return null;
-	}
-
-	public static IServer findPreviewServer(String id) {
-		IServer[] servers = ServerCore.getServers();
-		for (int i = 0; i < servers.length; i++) {
-			if (servers[i].getId().equals(id)) {
-				return servers[i];
-			}
-		}
-		return null;
-	}
-
-	public void modifyModules(IModule[] add, IModule[] remove, IProgressMonitor monitor) throws CoreException {
-		// do nothing
-	}
-
-	/**
-	 * Return a string representation of this object.
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return "PreviewServer";
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServerBehaviour.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServerBehaviour.java
deleted file mode 100644
index f9c9a9d..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewServerBehaviour.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.io.IOException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IDebugEventSetListener;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.jst.server.core.IWebModule;
-import org.eclipse.jst.server.core.internal.IMemento;
-import org.eclipse.jst.server.core.internal.JavaServerPlugin;
-import org.eclipse.jst.server.core.internal.Messages;
-import org.eclipse.jst.server.core.internal.ProgressUtil;
-import org.eclipse.jst.server.core.internal.Trace;
-import org.eclipse.jst.server.core.internal.XMLMemento;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.model.IModuleResource;
-import org.eclipse.wst.server.core.model.IModuleResourceDelta;
-import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
-import org.eclipse.wst.server.core.util.IStaticWeb;
-import org.eclipse.wst.server.core.util.PublishUtil;
-import org.eclipse.wst.server.core.util.SocketUtil;
-/**
- * Generic Http server.
- */
-public class PreviewServerBehaviour extends ServerBehaviourDelegate {
-	// the thread used to ping the server to check for startup
-	protected transient PingThread ping = null;
-	protected transient IProcess process;
-	protected transient IDebugEventSetListener processListener;
-
-	/**
-	 * PreviewServer.
-	 */
-	public PreviewServerBehaviour() {
-		super();
-	}
-
-	public void initialize(IProgressMonitor monitor) {
-		// do nothing
-	}
-
-	public PreviewRuntime getPreviewRuntime() {
-		if (getServer().getRuntime() == null)
-			return null;
-
-		return (PreviewRuntime) getServer().getRuntime().loadAdapter(PreviewRuntime.class, null);
-	}
-
-	public PreviewServer getPreviewServer() {
-		return (PreviewServer) getServer().getAdapter(PreviewServer.class);
-	}
-
-	/**
-	 * Returns the runtime base path for relative paths in the server
-	 * configuration.
-	 * 
-	 * @return the base path
-	 */
-	public IPath getRuntimeBaseDirectory() {
-		return getServer().getRuntime().getLocation();
-	}
-
-	/**
-	 * Setup for starting the server.
-	 * 
-	 * @param launch ILaunch
-	 * @param launchMode String
-	 * @param monitor IProgressMonitor
-	 * @throws CoreException if anything goes wrong
-	 */
-	protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
-		// check that ports are free
-		ServerPort[] ports = getPreviewServer().getServerPorts();
-		int port = ports[0].getPort();
-		
-		if (SocketUtil.isPortInUse(port, 5))
-			throw new CoreException(new Status(IStatus.ERROR, JavaServerPlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorPortInUse, new String[] {port + "", getServer().getName()}), null));
-		
-		// generate preview config file
-		XMLMemento memento = XMLMemento.createWriteRoot("server");
-		memento.putInteger("port", port);
-		
-		IModule[] modules = getServer().getModules();
-		int size = modules.length;
-		for (int i = 0; i < size; i++) {
-			IMemento mod = memento.createChild("module");
-			mod.putString("name", modules[i].getName());
-			String type = modules[i].getModuleType().getId();
-			if ("wst.web".equals(type)) {
-				IStaticWeb staticWeb = (IStaticWeb) modules[i].loadAdapter(IStaticWeb.class, null);
-				mod.putString("context", staticWeb.getContextRoot());
-				mod.putString("type", "static");
-			} else if ("jst.web".equals(type)) {
-				IWebModule webModule = (IWebModule) modules[i].loadAdapter(IWebModule.class, null);
-				mod.putString("context", webModule.getContextRoot());
-				mod.putString("type", "j2ee");
-			}
-			mod.putString("path", getModulePublishDirectory(modules[i]).toPortableString());
-		}
-		try {
-			memento.saveToFile(getTempDirectory().append("preview.xml").toOSString());
-		} catch (IOException e) {
-			Trace.trace(Trace.SEVERE, "Could not write preview config", e);
-			throw new CoreException(new Status(IStatus.ERROR, JavaServerPlugin.PLUGIN_ID, 0, "Could not write preview configuration", null));
-		}
-		
-		setServerRestartState(false);
-		setServerState(IServer.STATE_STARTING);
-		setMode(launchMode);
-		
-		// ping server to check for startup
-		try {
-			String url = "http://localhost";
-			if (port != 80)
-				url += ":" + port;
-			ping = new PingThread(getServer(), url, this);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Can't ping for Tomcat startup.");
-		}
-	}
-
-	protected void setProcess(final IProcess newProcess) {
-		if (process != null)
-			return;
-		
-		process = newProcess;
-		if (processListener != null)
-			DebugPlugin.getDefault().removeDebugEventListener(processListener);
-		if (newProcess == null)
-			return;
-		
-		processListener = new IDebugEventSetListener() {
-			public void handleDebugEvents(DebugEvent[] events) {
-				if (events != null) {
-					int size = events.length;
-					for (int i = 0; i < size; i++) {
-						Object obj = events[i].getSource();
-						
-						if (!(obj instanceof IDebugTarget))
-							continue;
-						
-						IDebugTarget target = (IDebugTarget) obj;
-						IProcess targetProcess = target.getProcess();
-						
-						if (process != null && process.equals(targetProcess)
-								&& events[i].getKind() == DebugEvent.TERMINATE) {
-							DebugPlugin.getDefault().removeDebugEventListener(this);
-							stopImpl();
-						}
-					}
-				}
-			}
-		};
-		DebugPlugin.getDefault().addDebugEventListener(processListener);
-	}
-
-	protected void setServerStarted() {
-		setServerState(IServer.STATE_STARTED);
-	}
-
-	protected void stopImpl() {
-		if (ping != null) {
-			ping.stop();
-			ping = null;
-		}
-		if (process != null) {
-			process = null;
-			DebugPlugin.getDefault().removeDebugEventListener(processListener);
-			processListener = null;
-		}
-		setServerState(IServer.STATE_STOPPED);
-	}
-
-	protected void publishServer(int kind, IProgressMonitor monitor) throws CoreException {
-		monitor = ProgressUtil.getMonitorFor(monitor);
-		monitor.done();
-
-		setServerPublishState(IServer.PUBLISH_STATE_NONE);
-	}
-
-	/*
-	 * Publishes the given module to the server.
-	 */
-	protected void publishModule(int kind, int deltaKind, IModule[] moduleTree, IProgressMonitor monitor) throws CoreException {
-		IModule module = moduleTree[moduleTree.length - 1]; 
-		IPath to = getModulePublishDirectory(module);
-		
-		if (kind == IServer.PUBLISH_CLEAN || deltaKind == ServerBehaviourDelegate.REMOVED) {
-			IStatus[] status = PublishUtil.deleteDirectory(to.toFile(), monitor);
-			throwException(status);
-		}
-		
-		IModuleResource[] res = getResources(moduleTree);
-		IStatus[] status = PublishUtil.publishSmart(res, to, monitor);
-		throwException(status);
-		
-		setModulePublishState(moduleTree, IServer.PUBLISH_STATE_NONE);
-	}
-
-	/**
-	 * Utility method to throw a CoreException based on the contents of a list of
-	 * error and warning status.
-	 * 
-	 * @param status a List containing error and warning IStatus
-	 * @throws CoreException
-	 */
-	private static void throwException(IStatus[] status) throws CoreException {
-		if (status == null || status.length == 0)
-			return;
-		
-		if (status.length == 1)
-			throw new CoreException(status[0]);
-		
-		String message = Messages.errorPublish;
-		MultiStatus status2 = new MultiStatus(JavaServerPlugin.PLUGIN_ID, 0, status, message, null);
-		throw new CoreException(status2);
-	}
-
-	public void restart(String launchMode) throws CoreException {
-		setServerState(IServer.STATE_STOPPED);
-		setServerState(IServer.STATE_STARTED);
-	}
-
-	/**
-	 * Cleanly shuts down and terminates the server.
-	 * 
-	 * @param force <code>true</code> to kill the server
-	 */
-	public void stop(boolean force) {
-		if (force) {
-			terminate();
-			return;
-		}
-		int state = getServer().getServerState();
-		if (state == IServer.STATE_STOPPED)
-			return;
-		else if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) {
-			terminate();
-			return;
-		}
-		
-		// should really try to stop normally
-		terminate();
-	}
-
-	/**
-	 * Terminates the server.
-	 */
-	protected void terminate() {
-		if (getServer().getServerState() == IServer.STATE_STOPPED)
-			return;
-		
-		try {
-			setServerState(IServer.STATE_STOPPING);
-			Trace.trace(Trace.FINEST, "Killing the HTTP process");
-			if (process != null && !process.isTerminated())
-				process.terminate();
-			
-			stopImpl();
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error killing the process", e);
-		}
-	}
-
-	protected IPath getTempDirectory() {
-		return super.getTempDirectory();
-	}
-
-	/**
-	 * Returns the module's publish path.
-	 * 
-	 * @param module a module
-	 * @return the publish directory for the module
-	 */
-	protected IPath getModulePublishDirectory(IModule module) {
-		return getTempDirectory().append(module.getName());
-	}
-
-	/**
-	 * Return a string representation of this object.
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return "PreviewServer";
-	}
-
-	protected IModuleResourceDelta[] getPublishedResourceDelta(IModule[] module) {
-		return super.getPublishedResourceDelta(module);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewSourcePathComputerDelegate.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewSourcePathComputerDelegate.java
deleted file mode 100644
index 97e9ff4..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewSourcePathComputerDelegate.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    IBM Corporation - Initial API and implementation
- **********************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
-import org.eclipse.jdt.launching.JavaRuntime;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerUtil;
-/**
- *
- */
-public class PreviewSourcePathComputerDelegate implements ISourcePathComputerDelegate {
-	/* (non-Javadoc)
-	 * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate#computeSourceContainers(org.eclipse.debug.core.ILaunchConfiguration, org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
-		List classpaths = new ArrayList();
-		classpaths.addAll(Arrays.asList(JavaRuntime.computeUnresolvedSourceLookupPath(configuration)));
-		List sourcefolderList = new ArrayList();
-		
-		IServer server = ServerUtil.getServer(configuration);
-		if (server != null) {
-			List list = new ArrayList();
-			IModule[] modules = server.getModules();
-			for (int i = 0; i < modules.length; i++) {
-				IProject project = modules[i].getProject();
-				if (project != null) {
-					IFolder moduleFolder = project.getFolder(modules[i].getName());
-					if (moduleFolder.exists()) {
-						sourcefolderList.add(new FolderSourceContainer(moduleFolder, true));
-					}
-					
-					try {
-						if (project.hasNature(JavaCore.NATURE_ID)) {
-							IJavaProject javaProject = (IJavaProject) project.getNature(JavaCore.NATURE_ID);
-							if (!list.contains(javaProject))
-								list.add(javaProject);
-						}
-					} catch (Exception e) {
-						// ignore
-					}
-				}
-			}
-			int size = list.size();
-			IJavaProject[] projects = new IJavaProject[size];
-			list.toArray(projects);
-			
-			for (int i = 0; i < size; i++)
-				classpaths.addAll(Arrays.asList(JavaRuntime.computeUnresolvedRuntimeClasspath(projects[i])));
-		}
-
-		IRuntimeClasspathEntry[] entries = new IRuntimeClasspathEntry[classpaths.size()];
-		classpaths.toArray(entries);
-
-		IRuntimeClasspathEntry[] resolved = JavaRuntime.resolveSourceLookupPath(entries, configuration);
-		ISourceContainer[] sourceContainers = JavaRuntime.getSourceContainers(resolved);
-		
-		if (!sourcefolderList.isEmpty()) {
-			ISourceContainer[] combinedSourceContainers = new ISourceContainer[sourceContainers.length + sourcefolderList.size()];
-			sourcefolderList.toArray(combinedSourceContainers);
-			System.arraycopy(sourceContainers, 0, combinedSourceContainers, sourcefolderList.size(), sourceContainers.length);
-			sourceContainers = combinedSourceContainers;
-		}
-
-		return sourceContainers;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewStartup.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewStartup.java
deleted file mode 100644
index e911c8e..0000000
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/preview/PreviewStartup.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.core.internal.preview;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jst.server.core.internal.Trace;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerType;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.internal.IStartup;
-
-public class PreviewStartup implements IStartup {
-	private static final String ID = "xyz"; 
-
-	public void startup() {
-		// create runtime
-		IRuntime[] runtimes = ServerCore.getRuntimes();
-		IRuntime runtime = null;
-		
-		int size = runtimes.length;
-		for (int i = 0; i < size; i++) {
-			if (runtimes[i].getRuntimeType() != null && PreviewRuntime.ID.equals(runtimes[i].getRuntimeType().getId())) {
-				if (ID.equals(runtimes[i].getId()))
-					runtime = runtimes[i];
-			}
-		}
-		
-		if (runtime == null) {
-			try {
-				IRuntimeType runtimeType = ServerCore.findRuntimeType(PreviewRuntime.ID);
-				IRuntimeWorkingCopy wc = runtimeType.createRuntime(ID, null);
-				wc.setName("My Preview");
-				wc.setReadOnly(true);
-				runtime = wc.save(true, null);
-			} catch (CoreException ce) {
-				Trace.trace(Trace.WARNING, "Could not create default preview runtime");
-			}
-		}
-		
-		// create server
-		IServer[] servers = ServerCore.getServers();
-		
-		boolean found = false;
-		size = servers.length;
-		for (int i = 0; i < size; i++) {
-			if (servers[i].getServerType() != null && PreviewServer.ID.equals(servers[i].getServerType().getId())) {
-				if (ID.equals(servers[i].getId()))
-					found = true;
-			}
-		}
-		
-		if (!found) {
-			try {
-				IServerType serverType = ServerCore.findServerType(PreviewServer.ID);
-				IServerWorkingCopy wc = serverType.createServer(ID, null, runtime, null);
-				wc.setName("My preview");
-				wc.setHost("localhost");
-				wc.setReadOnly(true);
-				wc.save(true, null);
-			} catch (CoreException ce) {
-				Trace.trace(Trace.WARNING, "Could not create default preview server");
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/ClasspathRuntimeTargetHandler.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/EJBBean.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/EJBBean.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/EJBBean.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/EJBBean.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/FacetUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/FacetUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/FacetUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/FacetUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IApplicationClientModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IApplicationClientModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IApplicationClientModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IApplicationClientModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IConnectorModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IConnectorModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IConnectorModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IConnectorModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IEJBModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IEJBModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IEJBModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IEJBModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IEnterpriseApplication.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IEnterpriseApplication.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IEnterpriseApplication.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IEnterpriseApplication.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IJ2EEModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IJ2EEModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IJ2EEModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IJ2EEModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IJavaRuntime.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IJavaRuntime.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IJavaRuntime.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IJavaRuntime.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IUtilityModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IUtilityModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IUtilityModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IUtilityModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IWebModule.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IWebModule.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/IWebModule.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/IWebModule.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/JndiLaunchable.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/JndiLaunchable.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/JndiLaunchable.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/JndiLaunchable.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/JndiObject.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/JndiObject.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/JndiObject.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/JndiObject.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/PublishUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/PublishUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/PublishUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/PublishUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/RuntimeClasspathProviderDelegate.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/ServerProfilerDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/ServerProfilerDelegate.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/ServerProfilerDelegate.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/ServerProfilerDelegate.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/Servlet.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/Servlet.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/Servlet.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/Servlet.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntime.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntime.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntime.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntime.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntimeClasspathProvider.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntimeClasspathProvider.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntimeClasspathProvider.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntimeClasspathProvider.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntimeUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntimeUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/GenericRuntimeUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/GenericRuntimeUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IGenericRuntime.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IGenericRuntime.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IGenericRuntime.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IGenericRuntime.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IGenericRuntimeWorkingCopy.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IGenericRuntimeWorkingCopy.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IGenericRuntimeWorkingCopy.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IGenericRuntimeWorkingCopy.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IMemento.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IMemento.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/IMemento.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/IMemento.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/J2EELaunchableClient.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/J2EELaunchableClient.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/J2EELaunchableClient.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/J2EELaunchableClient.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/J2EEUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/J2EEUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/J2EEUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/J2EEUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/JRERuntimeComponentProvider.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/JRERuntimeComponentProvider.java
new file mode 100644
index 0000000..0b1b80e
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/JRERuntimeComponentProvider.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.server.core.internal;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstall2;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jst.server.core.IJavaRuntime;
+import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
+import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.internal.Runtime;
+
+public class JRERuntimeComponentProvider extends RuntimeComponentProviderDelegate {
+	public static final String CLASSPATH = "classpath";
+
+	protected int timestamp = -1;
+	protected IVMInstall vmInstall;
+	protected String jvmver;
+
+	public List getRuntimeComponents(IRuntime runtime) {
+		// define JRE component
+		IJavaRuntime javaRuntime = (IJavaRuntime) runtime.loadAdapter(IJavaRuntime.class, null);
+		if (javaRuntime != null) {
+			if (timestamp != ((Runtime) runtime).getTimestamp()) {
+				vmInstall = null;
+				jvmver = null;
+				timestamp = ((Runtime) runtime).getTimestamp();
+			}
+			if (vmInstall == null)
+				vmInstall = javaRuntime.getVMInstall(); 
+			
+			if (jvmver == null) {
+				IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall;
+				if (vmInstall2 != null)
+					jvmver = vmInstall2.getJavaVersion();
+			}
+			
+			String vmInstallName;
+			if (vmInstall != null)
+				vmInstallName = vmInstall.getName();
+			else
+				vmInstallName = "Unknown";
+			
+			IRuntimeComponentVersion rcv = null;
+			if (vmInstall == null) {
+				// JRE couldn't be found - assume 6.0 for now
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+			} else if (jvmver == null) {
+				Trace.trace(Trace.WARNING, "Could not determine VM version for: " + vmInstallName);
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+			} else if (jvmver.startsWith("1.3"))
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.3");
+			else if (jvmver.startsWith("1.4"))
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("1.4");
+			else if (jvmver.startsWith("1.5") || jvmver.startsWith("5.0"))
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("5.0");
+			else if (jvmver.startsWith("1.6") || jvmver.startsWith("6.0"))
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+			else {
+				Trace.trace(Trace.WARNING, "Invalid Java version: " + vmInstallName + ", " + jvmver);
+				rcv = RuntimeManager.getRuntimeComponentType("standard.jre").getVersion("6.0");
+			}
+			
+			if (rcv != null) {
+				Map properties = new HashMap(3);
+				if (vmInstallName != null)
+					properties.put("name", vmInstallName);
+				else
+					properties.put("name", "-");
+				
+				if (vmInstall == null) {
+					// no classpath
+				} else if (vmInstall == null || javaRuntime.isUsingDefaultJRE())
+					properties.put(CLASSPATH, new Path(JavaRuntime.JRE_CONTAINER).toPortableString());
+				else
+					properties.put(CLASSPATH, JavaRuntime.newJREContainerPath(vmInstall).toPortableString());
+				
+				List list = new ArrayList();
+				list.add(RuntimeManager.createRuntimeComponent(rcv, properties));
+				return list;
+			}
+		}
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/JavaServerPlugin.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/LaunchConfigurationUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/LaunchConfigurationUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/LaunchConfigurationUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/LaunchConfigurationUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Messages.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Messages.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Messages.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Messages.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Messages.properties b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Messages.properties
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Messages.properties
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Messages.properties
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/ProgressUtil.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/ProgressUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/ProgressUtil.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/ProgressUtil.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathContainer.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathContainer.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathContainer.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathContainer.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathContainerInitializer.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathContainerInitializer.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathContainerInitializer.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathContainerInitializer.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java
similarity index 97%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java
index e978e3d..72a6a61 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProvider.java
@@ -47,7 +47,7 @@
 		
 		if (pf.equals(WEB_FACET) || pf.equals(EJB_FACET) || pf.equals(EAR_FACET) ||
 				pf.equals(UTILITY_FACET) || pf.equals(CONNECTOR_FACET) || pf.equals(APP_CLIENT_FACET)) {
-			String s = rc.getProperty(RuntimeBridge.CLASSPATH);
+			String s = rc.getProperty(JRERuntimeComponentProvider.CLASSPATH);
 			if (s == null || s.length() == 0)
 				return null;
 			
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeClasspathProviderWrapper.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
similarity index 68%
copy from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
copy to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
index e5185f5..968e4dd 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2006, 2007 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
@@ -10,9 +10,7 @@
  *******************************************************************************/
 package org.eclipse.jst.server.core.internal;
 
-import java.util.List;
-
-import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.internal.facets.RuntimeFacetComponentProviderDelegate;
 /**
  * A runtime component provider can provide additional runtime components for a facet runtime.
  * This provider is scoped by runtime type and may provide components for multiple
@@ -30,17 +28,6 @@
  * 
  * @plannedfor 2.0
  */
-public abstract class RuntimeComponentProviderDelegate {
-	public RuntimeComponentProviderDelegate() {
-		// default constructor
-	}
-
-	/**
-	 * Add runtime components to the given runtime. Components should be created by calling
-	 * RuntimeManager.createRuntimeComponent(IRuntimeComponentVersion, Map)
-	 * 
-	 * @param runtime a server runtime
-	 * @return a list of runtimes, or an empty list or null if there are no additional components
-	 */
-	public abstract List getRuntimeComponents(IRuntime runtime);
+public abstract class RuntimeComponentProviderDelegate extends RuntimeFacetComponentProviderDelegate {
+	// nothing added
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
similarity index 97%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
index fd74dcc..dc10d05 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
@@ -109,7 +109,7 @@
 	}
 
 	/*
-	 * @see RuntimeComponentProviderDelegate#getRuntimeComponents(IRuntime)
+	 * @see RuntimeFacetComponentProviderDelegate#getRuntimeComponents(IRuntime)
 	 */
 	public List getComponents(IRuntime runtime) {
 		if (runtime == null)
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeFacetMapping.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeFacetMapping.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeFacetMapping.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/RuntimeFacetMapping.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/ServerProfiler.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/ServerProfiler.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/ServerProfiler.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/ServerProfiler.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java
similarity index 74%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java
index a0eaa23..f2e96f9 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java
+++ b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/StandardJreClasspathProvider.java
@@ -15,6 +15,7 @@
 import java.util.List;
 
 import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.JavaCore;
@@ -31,15 +32,19 @@
 
 	private IRuntimeComponent rc;
 
-	public StandardJreClasspathProvider(final IRuntimeComponent rc) {
+	public StandardJreClasspathProvider(IRuntimeComponent rc) {
 		this.rc = rc;
 	}
 
-	public List getClasspathEntries(final IProjectFacetVersion fv) {
+	public List getClasspathEntries(IProjectFacetVersion fv) {
 		if (fv.getProjectFacet() == JAVA_FACET) {
-			String path = rc.getProperty(RuntimeBridge.CLASSPATH);
-			if (path != null) {
-				IClasspathEntry cpentry = JavaCore.newContainerEntry(new Path(path));
+			String runtimeTypeId = rc.getProperty("type-id");
+			String runtimeId = rc.getProperty("id");
+			RuntimeClasspathProviderWrapper rcpw = JavaServerPlugin.findRuntimeClasspathProvider(runtimeTypeId);
+			if (rcpw != null) {
+				IPath path = new Path(RuntimeClasspathContainer.SERVER_CONTAINER);
+				path = path.append(rcpw.getId()).append(runtimeId);
+				IClasspathEntry cpentry = JavaCore.newContainerEntry(path);
 				return Collections.singletonList(cpentry);
 			}
 		}
@@ -50,7 +55,7 @@
 	public static final class Factory implements IAdapterFactory {
 		private static final Class[] ADAPTER_TYPES = { IClasspathProvider.class };
 
-		public Object getAdapter(final Object adaptable, final Class adapterType) {
+		public Object getAdapter(Object adaptable, Class adapterType) {
 			IRuntimeComponent rc = (IRuntimeComponent) adaptable;
 			return new StandardJreClasspathProvider(rc);
 		}
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Trace.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Trace.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/Trace.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/Trace.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/XMLMemento.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/XMLMemento.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/XMLMemento.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/XMLMemento.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusLaunchable.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusLaunchable.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusLaunchable.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusLaunchable.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusLaunchableAdapterDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusLaunchableAdapterDelegate.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusLaunchableAdapterDelegate.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusLaunchableAdapterDelegate.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/CactusModuleArtifactAdapterDelegate.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/ServletTestCasePropertyTester.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/ServletTestCasePropertyTester.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/ServletTestCasePropertyTester.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/ServletTestCasePropertyTester.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/WebTestableResource.java b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/WebTestableResource.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/cactus/WebTestableResource.java
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/internal/cactus/WebTestableResource.java
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/package.html b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/package.html
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/package.html
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/package.html
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/package.xml b/plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/package.xml
similarity index 100%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/package.xml
rename to plugins/org.eclipse.jst.server.core/src/org/eclipse/jst/server/core/package.xml
diff --git a/plugins/org.eclipse.jst.server.ui/.classpath b/plugins/org.eclipse.jst.server.ui/.classpath
index d2acb1f..ce73933 100644
--- a/plugins/org.eclipse.jst.server.ui/.classpath
+++ b/plugins/org.eclipse.jst.server.ui/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="sjavaui/"/>
+	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.jst.server.ui/build.properties b/plugins/org.eclipse.jst.server.ui/build.properties
index 2e85736..1fc39cb 100644
--- a/plugins/org.eclipse.jst.server.ui/build.properties
+++ b/plugins/org.eclipse.jst.server.ui/build.properties
@@ -17,4 +17,4 @@
 bin.excludes = bin/**,\
                @dot/**,\
                temp.folder/**
-source.. = sjavaui/
+source.. = src/
diff --git a/plugins/org.eclipse.jst.server.ui/icons/obj16/preview.gif b/plugins/org.eclipse.jst.server.ui/icons/obj16/preview.gif
deleted file mode 100644
index b51ae39..0000000
--- a/plugins/org.eclipse.jst.server.ui/icons/obj16/preview.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.ui/plugin.xml b/plugins/org.eclipse.jst.server.ui/plugin.xml
index 51c27ff..e8f5f28 100644
--- a/plugins/org.eclipse.jst.server.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.server.ui/plugin.xml
@@ -8,27 +8,27 @@
         typeIds="org.eclipse.jst.server.core.runtimeType"
         icon="icons/obj16/java_jar.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.web"
         typeIds="jst.web"
         icon="icons/obj16/web_module.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.ejb"
         typeIds="jst.ejb"
         icon="icons/obj16/ejb_module.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.ear"
         typeIds="jst.ear"
         icon="icons/obj16/ear.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.appclient"
         typeIds="jst.appclient"
         icon="icons/obj16/appclient_module.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.connector"
         typeIds="jst.connector"
         icon="icons/obj16/java_jar.gif"/>
      <image
-        id="org.eclipse.jst.server"
+        id="org.eclipse.jst.server.utility"
         typeIds="jst.utility"
         icon="icons/obj16/java_jar.gif"/>
   </extension>
@@ -97,41 +97,4 @@
        id="org.eclipse.jst.server.ui.internal.cactus.CactusQuickFixProcessor">
     </quickFixProcessor>
   </extension>
-
-
-  <extension point="org.eclipse.wst.server.ui.serverImages">
-     <image
-        id="org.eclipse.jst.server.ui"
-        typeIds="org.eclipse.jst.server.preview.runtime,org.eclipse.jst.server.preview.server"
-        icon="icons/obj16/preview.gif"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.ui.images">
-    <image runtime-component-type="org.eclipse.jst.server.preview.runtime"
-       path="icons/obj16/preview.gif"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
-    <adapter>
-      <runtime-component id="org.eclipse.jst.server.preview.runtime"/>
-      <factory class="org.eclipse.jst.server.ui.internal.RuntimeLabelProvider$Factory"/>
-      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
-    </adapter>
-  </extension>
-  
-  <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
-    <launchConfigurationTypeImage
-      id="org.eclipse.jst.server.ui.preview.launchConfigurationTypeImage"
-      configTypeID="org.eclipse.jst.server.core.preview.launchConfigurationType"
-      icon="icons/obj16/preview.gif">
-    </launchConfigurationTypeImage>
-  </extension>
-
-  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
-    <launchConfigurationTabGroup
-      id="org.eclipse.jst.server.ui.preview.launchConfigurationTabGroup"
-      type="org.eclipse.jst.server.core.preview.launchConfigurationType"
-      class="org.eclipse.jst.server.ui.internal.preview.PreviewLaunchConfigurationTabGroup">
-    </launchConfigurationTabGroup>
-  </extension>
 </plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java b/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java
deleted file mode 100644
index 51851cf..0000000
--- a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.server.ui.internal.preview;
-
-import org.eclipse.debug.ui.*;
-import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
-import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab;
-import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab;
-
-import org.eclipse.wst.server.ui.ServerLaunchConfigurationTab;
-/**
- * A debug tab group for launching Tomcat. 
- */
-public class PreviewLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
-	/*
-	 * @see ILaunchConfigurationTabGroup#createTabs(ILaunchConfigurationDialog, String)
-	 */
-	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[6];
-		tabs[0] = new ServerLaunchConfigurationTab(new String[] { "org.eclipse.jst.server.preview" });
-		tabs[0].setLaunchConfigurationDialog(dialog);
-		tabs[1] = new JavaArgumentsTab();
-		tabs[1].setLaunchConfigurationDialog(dialog);
-		tabs[2] = new JavaClasspathTab();
-		tabs[2].setLaunchConfigurationDialog(dialog);
-		tabs[3] = new SourceLookupTab();
-		tabs[3].setLaunchConfigurationDialog(dialog);
-		tabs[4] = new EnvironmentTab();
-		tabs[4].setLaunchConfigurationDialog(dialog);
-		tabs[5] = new CommonTab();
-		tabs[5].setLaunchConfigurationDialog(dialog);
-		setTabs(tabs);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ContextIds.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ContextIds.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ContextIds.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ContextIds.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/GenericRuntimeComposite.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/GenericRuntimeComposite.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/GenericRuntimeComposite.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/GenericRuntimeComposite.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/GenericRuntimeWizardFragment.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/GenericRuntimeWizardFragment.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/GenericRuntimeWizardFragment.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/GenericRuntimeWizardFragment.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ImageResource.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ImageResource.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ImageResource.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ImageResource.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/JavaServerUIPlugin.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/JavaServerUIPlugin.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/JavaServerUIPlugin.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/JavaServerUIPlugin.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Messages.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Messages.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Messages.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Messages.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Messages.properties b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Messages.properties
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Messages.properties
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Messages.properties
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/RuntimeLabelProvider.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/RuntimeLabelProvider.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/RuntimeLabelProvider.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/RuntimeLabelProvider.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/SWTUtil.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/SWTUtil.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/SWTUtil.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/SWTUtil.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ServerClasspathContainerPage.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ServerClasspathContainerPage.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/ServerClasspathContainerPage.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/ServerClasspathContainerPage.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/StandardJreLabelProvider.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/StandardJreLabelProvider.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/StandardJreLabelProvider.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/StandardJreLabelProvider.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Trace.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Trace.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/Trace.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/Trace.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/CactusAddLibrariesProposal.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/CactusAddLibrariesProposal.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/CactusAddLibrariesProposal.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/CactusAddLibrariesProposal.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/CactusQuickFixProcessor.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/CactusQuickFixProcessor.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/CactusQuickFixProcessor.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/CactusQuickFixProcessor.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/JUnitClientDelegate.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/JUnitClientDelegate.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/JUnitClientDelegate.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/JUnitClientDelegate.java
diff --git a/plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/NewServletTestCaseWizard.java b/plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/NewServletTestCaseWizard.java
similarity index 100%
rename from plugins/org.eclipse.jst.server.ui/sjavaui/org/eclipse/jst/server/ui/internal/cactus/NewServletTestCaseWizard.java
rename to plugins/org.eclipse.jst.server.ui/src/org/eclipse/jst/server/ui/internal/cactus/NewServletTestCaseWizard.java
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 fb52e02..58b1c6d 100644
--- a/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.core/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.server.core,
  org.eclipse.wst.server.core.internal;x-friends:="org.eclipse.wst.server.ui",
+ org.eclipse.wst.server.core.internal.facets;x-friends:="org.eclipse.wst.server.ui",
  org.eclipse.wst.server.core.internal.provisional;x-internal:=true,
  org.eclipse.wst.server.core.model,
  org.eclipse.wst.server.core.util
@@ -15,6 +16,7 @@
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.update.core;resolution:=optional;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
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.core/plugin.properties b/plugins/org.eclipse.wst.server.core/plugin.properties
index aa65ea2..eb2647b 100644
--- a/plugins/org.eclipse.wst.server.core/plugin.properties
+++ b/plugins/org.eclipse.wst.server.core/plugin.properties
@@ -27,5 +27,7 @@
 extensionPointInstallableServers=Installable Servers
 extensionPointInstallableRuntimes=Installable Runtimes
 
+extensionPointRuntimeFacetComponentProviders=Runtime Facet Component Providers
+
 moduleTypeUnknown=Unknown module
 moduleTypeStaticWebName=Static Web project
diff --git a/plugins/org.eclipse.wst.server.core/plugin.xml b/plugins/org.eclipse.wst.server.core/plugin.xml
index b5800d0..8887523 100644
--- a/plugins/org.eclipse.wst.server.core/plugin.xml
+++ b/plugins/org.eclipse.wst.server.core/plugin.xml
@@ -17,6 +17,7 @@
   <extension-point id="internalStartup" name="%extensionPointServerStartup" schema="schema/startup.exsd"/>
   <extension-point id="installableServers" name="%extensionPointInstallableServers" schema="schema/installableServers.exsd"/>
   <extension-point id="installableRuntimes" name="%extensionPointInstallableRuntimes" schema="schema/installableRuntimes.exsd"/>
+  <extension-point id="runtimeFacetComponentProviders" name="%extensionPointRuntimeFacetComponentProviders" schema="schema/runtimeFacetComponentProviders.exsd"/>
 
   <extension point="org.eclipse.wst.server.core.moduleTypes">
     <moduleType
@@ -26,4 +27,10 @@
        id="wst.web"
        name="%moduleTypeStaticWebName"/>
   </extension>
+
+  <extension point="org.eclipse.wst.common.project.facet.core.runtimeBridges">
+    <bridge
+      id="org.eclipse.wst.server.core.default"
+      class="org.eclipse.wst.server.core.internal.facets.RuntimeBridge"/>
+  </extension>
 </plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/schema/runtimeFacetComponentProviders.exsd b/plugins/org.eclipse.wst.server.core/schema/runtimeFacetComponentProviders.exsd
new file mode 100644
index 0000000..475d4ec
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/schema/runtimeFacetComponentProviders.exsd
@@ -0,0 +1,136 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.server.core">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.wst.server.core" id="runtimeFacetComponentProviders" name="Runtime Facet Component Providers"/>
+      </appInfo>
+      <documentation>
+         This extension point is internal and experimental and should not be used by downstream components.
+This extension point is used to provide new runtime components to an existing facet runtime.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <complexType>
+         <sequence>
+            <element ref="runtimeComponentProvider" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="runtimeComponentProvider">
+      <annotation>
+         <appInfo>
+            <meta.element labelAttribute="name"/>
+         </appInfo>
+      </annotation>
+      <complexType>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  specifies a unique identifier for this extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="runtimeTypeIds" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a comma separated list of runtime type ids that this provider may support. Used for memory &amp; performance reasons
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  specifies the fully qualified name of the Java class that extends &lt;samp&gt;RuntimeClasspathProviderDelegate&lt;/samp&gt;.
+Runtime classpath provider instances of this type will delegate to instances of this class.
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.jst.server.core.RuntimeClasspathProviderDelegate"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         2.0.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         The following is an example of a runtime component provider extension point:
+
+&lt;pre&gt;
+  &lt;extension point=&quot;org.eclipse.wst.server.core.runtimeFacetComponentProviders&quot;&gt;
+     &lt;runtimeComponentProvider
+        id=&quot;com.example.runtimeComponentProvider&quot;
+        runtimeTypeIds=&quot;com.example.runtime, com.example2.*&quot;
+        class=&quot;com.example.ExampleRuntimeComponentProvider&quot;/&gt;
+   &lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         Value of the attribute &lt;b&gt;class&lt;/b&gt; must be a fully qualified name of a Java class that extends &lt;b&gt;org.eclipse.wst.server.core.RuntimeFacetClasspathProviderDelegate&lt;/b&gt; and contains a public 0-arg constructor.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
+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 
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.wst.server.core/schema/runtimeTypes.exsd b/plugins/org.eclipse.wst.server.core/schema/runtimeTypes.exsd
index 9ac37bf..b52e889 100644
--- a/plugins/org.eclipse.wst.server.core/schema/runtimeTypes.exsd
+++ b/plugins/org.eclipse.wst.server.core/schema/runtimeTypes.exsd
@@ -108,6 +108,20 @@
                </appInfo>

             </annotation>

          </attribute>

+         <attribute name="facetRuntimeComponent" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="facetRuntimeVersion" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

       </complexType>

    </element>

 

diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.java
index d6e3d39..b0e3179 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.java
@@ -73,6 +73,9 @@
 	public static String errorRename;
 	public static String errorNotADirectory;
 
+	public static String errorNoRuntime;
+	public static String errorFacet;
+
 	static {
 		NLS.initializeMessages(ServerPlugin.PLUGIN_ID + ".internal.Messages", Messages.class);
 	}
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.properties b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.properties
index 95d17e7..91c2035 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.properties
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/Messages.properties
@@ -83,3 +83,5 @@
 errorRename=Could not replace with temp file {0}.
 errorNotADirectory=Could not delete {0} since it is not a directory.
 
+errorNoRuntime=Cannot verify facets because there is no runtime associated with the server.
+errorFacet=Project facet {0} version {1} is not supported.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
index fa32434..c74f28b 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/RuntimeType.java
@@ -86,7 +86,23 @@
 		}
 		return Messages.defaultVersion;
 	}
-	
+
+	public String getFacetRuntimeComponent() {
+		try {
+			return element.getAttribute("facetRuntimeComponent");
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	public String getFacetRuntimeVersion() {
+		try {
+			return element.getAttribute("facetRuntimeVersion");
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
 	protected RuntimeDelegate createRuntimeDelegate() throws CoreException {
 		try {
 			return (RuntimeDelegate) element.createExecutableExtension("class");
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPreferences.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPreferences.java
index b2eb04b..42e21ae 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPreferences.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPreferences.java
@@ -164,7 +164,7 @@
 	 * @return int
 	 */
 	public boolean getDefaultAutoPublishLocal() {
-		return false;
+		return true;
 	}
 
 	/**
@@ -185,14 +185,14 @@
 		preferences.setValue(PREF_AUTO_PUBLISH_LOCAL, auto);
 		ServerPlugin.getInstance().savePluginPreferences();
 	}
-	
+
 	/**
 	 * Returns the default setting for local auto-publishing.
 	 * 
 	 * @return int
 	 */
 	public int getDefaultAutoPublishLocalTime() {
-		return 15;
+		return 5;
 	}
 
 	/**
@@ -220,7 +220,7 @@
 	 * @return int
 	 */
 	public boolean getDefaultAutoPublishRemote() {
-		return false;
+		return true;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetMappingUtil.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetMappingUtil.java
new file mode 100644
index 0000000..25a817e
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetMappingUtil.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.internal.facets;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+import org.eclipse.wst.server.core.internal.Trace;
+/**
+ * The main server tooling plugin class.
+ */
+public class FacetMappingUtil extends Plugin {
+	//	cached copy of all runtime component providers
+	private static List runtimeComponentProviders;
+
+	//	cached copy of all runtime facet mappings
+	private static List runtimeFacetMappings;
+
+	/**
+	 * Returns an array of all known runtime facet mapping instances.
+	 * <p>
+	 * A new array is returned on each call, so clients may store or modify the result.
+	 * </p>
+	 * 
+	 * @return a possibly-empty array of runtime facet mapping instances
+	 *    {@link RuntimeFacetMapping}
+	 */
+	public static RuntimeFacetMapping[] getRuntimeFacetMapping() {
+		if (runtimeFacetMappings == null)
+			loadRuntimeFacetMapping();
+		
+		RuntimeFacetMapping[] rfm = new RuntimeFacetMapping[runtimeFacetMappings.size()];
+		runtimeFacetMappings.toArray(rfm);
+		return rfm;
+	}
+
+	/**
+	 * Returns the runtime component provider that supports the given runtime type, or <code>null</code>
+	 * if none. This convenience method searches the list of known runtime
+	 * component providers for the one with a matching runtime type.
+	 * The runtimeType may not be null.
+	 *
+	 * @param runtimeType a runtime type
+	 * @return the runtime component provider instance, or <code>null</code> if
+	 *   there is no runtime component provider with the given id
+	 */
+	public static RuntimeComponentProviderWrapper findRuntimeFacetComponentProvider(IRuntimeType runtimeType) {
+		if (runtimeType == null)
+			throw new IllegalArgumentException();
+
+		if (runtimeComponentProviders == null)
+			loadRuntimeComponentProviders();
+		
+		Iterator iterator = runtimeComponentProviders.iterator();
+		while (iterator.hasNext()) {
+			RuntimeComponentProviderWrapper runtimeComponentProvider = (RuntimeComponentProviderWrapper) iterator.next();
+			if (runtimeComponentProvider.supportsRuntimeType(runtimeType))
+				return runtimeComponentProvider;
+		}
+		return null;
+	}
+
+	/**
+	 * Load the runtime component providers.
+	 */
+	private static synchronized void loadRuntimeComponentProviders() {
+		if (runtimeComponentProviders != null)
+			return;
+		Trace.trace(Trace.CONFIG, "->- Loading .runtimeFacetComponentProviders extension point ->-");
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		IConfigurationElement[] cf = registry.getConfigurationElementsFor(ServerPlugin.PLUGIN_ID, "runtimeFacetComponentProviders");
+		
+		int size = cf.length;
+		List list = new ArrayList(size);
+		for (int i = 0; i < size; i++) {
+			try {
+				list.add(new RuntimeComponentProviderWrapper(cf[i]));
+				Trace.trace(Trace.CONFIG, "  Loaded runtimeFacetComponentProvider: " + cf[i].getAttribute("id"));
+			} catch (Throwable t) {
+				Trace.trace(Trace.SEVERE, "  Could not load runtimeFacetComponentProvider: " + cf[i].getAttribute("id"), t);
+			}
+		}
+		runtimeComponentProviders = list;
+		
+		Trace.trace(Trace.CONFIG, "-<- Done loading .runtimeFacetComponentProviders extension point -<-");
+	}
+
+	/**
+	 * Load the runtime facet mappings.
+	 */
+	private static synchronized void loadRuntimeFacetMapping() {
+		if (runtimeFacetMappings != null)
+			return;
+		Trace.trace(Trace.CONFIG, "->- Loading .runtimeFacetMapping extension point ->-");
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		IConfigurationElement[] cf = registry.getConfigurationElementsFor("org.eclipse.jst.server.core.runtimeFacetMappings");
+		
+		int size = cf.length;
+		List list = new ArrayList(size);
+		for (int i = 0; i < size; i++) {
+			try {
+				list.add(new RuntimeFacetMapping(cf[i]));
+				Trace.trace(Trace.CONFIG, "  Loaded runtimeFacetMapping: " + cf[i].getAttribute("runtimeTypeId"));
+			} catch (Throwable t) {
+				Trace.trace(Trace.SEVERE, "  Could not load runtimeFacetMapping: " + cf[i].getAttribute("id"), t);
+			}
+		}
+		runtimeFacetMappings = list;
+		
+		Trace.trace(Trace.CONFIG, "-<- Done loading .runtimeFacetMapping extension point -<-");
+	}	
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetUtil.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetUtil.java
new file mode 100644
index 0000000..31c6f02
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/FacetUtil.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.internal.facets;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.internal.Messages;
+import org.eclipse.wst.server.core.internal.ServerPlugin;
+/**
+ * Utility class for converting between facet runtimes and server runtimes.
+ * <p>
+ * This class provides all its functionality through static members.
+ * It is not intended to be subclassed or instantiated.
+ * </p>
+ * <p>
+ * <b>Provisional API:</b> This class/interface is part of an interim API that is still under development and expected to 
+ * change significantly before reaching stability. It is being made available at this early stage to solicit feedback 
+ * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken 
+ * (repeatedly) as the API evolves.
+ * </p>
+ */
+public final class FacetUtil {
+	/**
+	 * Static utility class - cannot create an instance.
+	 */
+	private FacetUtil() {
+		// can't create
+	}
+
+	/**
+	 * Returns the server runtime that corresponds to a facet runtime, or null
+	 * if none could be found.
+	 * 
+	 * @param runtime a facet runtime
+	 * @return the server runtime that corresponds to the facet runtime, or
+	 *    <code>null</code> if none could be found.
+	 */
+	public static IRuntime getRuntime(org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime) {
+		if (runtime == null)
+			throw new IllegalArgumentException();
+		
+		String id = runtime.getProperty("id");
+		if (id == null)
+			return null;
+		
+		IRuntime[] runtimes = ServerCore.getRuntimes();
+		int size = runtimes.length;
+		for (int i = 0; i < size; i++) {
+			if (id.equals(runtimes[i].getId()))
+				return runtimes[i];
+		}
+		
+		return null;
+	}
+
+	/**
+	 * Returns the facet runtime that corresponds to a server runtime, or null
+	 * if none could be found.
+	 * 
+	 * @param runtime a server runtime
+	 * @return the facet runtime that corresponds to the server runtime, or
+	 *    <code>null</code> if none could be found.
+	 */
+	public static org.eclipse.wst.common.project.facet.core.runtime.IRuntime getRuntime(IRuntime runtime) {
+		if (runtime == null)
+			throw new IllegalArgumentException();
+		
+		String id = runtime.getId();
+		if (id == null)
+			return null;
+		
+		Set runtimes = RuntimeManager.getRuntimes();
+		Iterator iterator = runtimes.iterator();
+		while (iterator.hasNext()) {
+			org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime2 = (org.eclipse.wst.common.project.facet.core.runtime.IRuntime) iterator.next();
+			if (id.equals(runtime2.getProperty("id")))
+				return runtime2;
+		}
+		return null;
+	}
+
+	/**
+	 * Tests whether the facets on a project are supported by a given server. Returns
+	 * an OK status if the server's runtime supports the project's facets, and an
+	 * ERROR status (with message) if it doesn't.
+	 * 
+	 * @param project a project
+	 * @param server a server
+	 * @return OK status if the server's runtime supports the project's facets, and an
+	 *    ERROR status (with message) if it doesn't
+	 */
+	public static final IStatus verifyFacets(IProject project, IServer server) {
+		if (server == null)
+			return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorNoRuntime, null);
+		IRuntime runtime = server.getRuntime();
+		if (runtime == null)
+			return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, Messages.errorNoRuntime, null);
+		
+		org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime2 = getRuntime(runtime);
+		
+		if (runtime2 == null) // bug 150194 - what do we do if the facet runtime doesn't exist yet
+			return Status.OK_STATUS;
+		
+		try {
+			IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+			Iterator iterator = facetedProject.getProjectFacets().iterator();
+			while (iterator.hasNext()) {
+				IProjectFacetVersion facet = (IProjectFacetVersion) iterator.next();
+				if (!runtime2.supports(facet))
+					return new Status(IStatus.ERROR, ServerPlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorFacet, facet.getProjectFacet().getLabel(), facet.getVersionString()), null);
+			}
+		} catch (CoreException ce) {
+			return ce.getStatus();
+		}
+		return Status.OK_STATUS;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeBridge.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeBridge.java
new file mode 100644
index 0000000..c299f5b
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeBridge.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Konstantin Komissarchik - initial API and implementation
+ *    IBM Corporation - Support for all server types
+ *******************************************************************************/
+package org.eclipse.wst.server.core.internal.facets;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeBridge;
+import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion;
+import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.server.core.internal.RuntimeType;
+/**
+ * 
+ */
+public class RuntimeBridge implements IRuntimeBridge {
+	protected static Map mappings = new HashMap();
+
+	static {
+		initialize();
+	}
+
+	private static void addMapping(String id, String id2, String version) {
+		ArrayList list = null;
+		try {
+			list = (ArrayList) mappings.get(id);
+		} catch (Exception e) {
+			// ignore
+		}
+		
+		if (list == null)
+			list = new ArrayList(2);
+		
+		try {
+			list.add(RuntimeManager.getRuntimeComponentType(id2).getVersion(version));
+			mappings.put(id, list);
+		} catch (Exception e) {
+			// ignore
+		}
+	}
+
+	private static void initialize() {
+		// add runtime mappings
+		IRuntimeType[] runtimeTypes = ServerCore.getRuntimeTypes();
+		int size = runtimeTypes.length;
+		for (int i = 0; i < size; i++) {
+			RuntimeType rt = (RuntimeType) runtimeTypes[i];
+			String component = rt.getFacetRuntimeComponent();
+			String version = rt.getFacetRuntimeVersion();
+			if (component != null && !"".equals(component) && version != null && !"".equals(version))
+				addMapping(rt.getId(), component, version);
+		}
+		
+		// add extension mappings
+		RuntimeFacetMapping[] rfms = FacetMappingUtil.getRuntimeFacetMapping();
+		size = rfms.length;
+		for (int i = 0; i < size; i++)
+			addMapping(rfms[i].getRuntimeTypeId(), rfms[i].getRuntimeComponent(), rfms[i].getVersion());
+	}
+
+	public Set getExportedRuntimeNames() throws CoreException {
+		IRuntime[] runtimes = ServerCore.getRuntimes();
+		Set result = new HashSet(runtimes.length);
+		
+		for (int i = 0; i < runtimes.length; i++) {
+			IRuntime runtime = runtimes[i];
+			IRuntimeType runtimeType = runtime.getRuntimeType();
+			if (runtimeType != null && mappings.containsKey(runtimeType.getId())) {
+				result.add(runtime.getName());
+			}
+		}
+		
+		return result;
+	}
+
+	public IStub bridge(String name) throws CoreException {
+		if (name == null)
+			throw new IllegalArgumentException();
+		
+		IRuntime[] runtimes = ServerCore.getRuntimes();
+		int size = runtimes.length;
+		for (int i = 0; i < size; i++) {
+			if (runtimes[i].getName().equals(name))
+				return new Stub(runtimes[i]);
+		}
+		return null;
+	}
+
+	private static class Stub implements IStub {
+		private IRuntime runtime;
+
+		public Stub(IRuntime runtime) {
+			this.runtime = runtime;
+		}
+
+		public List getRuntimeComponents() {
+			List components = new ArrayList(2);
+			if (runtime == null)
+				return components;
+			
+			// define server runtime component
+			Map properties = new HashMap(5);
+			if (runtime.getLocation() != null)
+				properties.put("location", runtime.getLocation().toPortableString());
+			else
+				properties.put("location", "");
+			properties.put("name", runtime.getName());
+			properties.put("id", runtime.getId());
+			if (runtime.getRuntimeType() != null) {
+				properties.put("type", runtime.getRuntimeType().getName());
+				properties.put("type-id", runtime.getRuntimeType().getId());
+			}
+			
+			String typeId = runtime.getRuntimeType().getId();
+			if (mappings.containsKey(typeId)) {
+				ArrayList list = (ArrayList) mappings.get(typeId);
+				int size = list.size();
+				for (int i = 0; i < size; i++) {
+					IRuntimeComponentVersion mapped = (IRuntimeComponentVersion) list.get(i);
+					components.add(RuntimeManager.createRuntimeComponent(mapped, properties));
+				}
+			}
+			
+			RuntimeComponentProviderWrapper componentProvider = FacetMappingUtil.findRuntimeFacetComponentProvider(runtime.getRuntimeType());
+			if (componentProvider != null) {
+				List list = componentProvider.getComponents(runtime);
+				if (list != null)
+					components.addAll(list);
+			}
+			
+			return components;
+		}
+
+		public Map getProperties() {
+			if (runtime == null)
+				return new HashMap(0);
+			return Collections.singletonMap("id", runtime.getId());
+		}
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeComponentProviderWrapper.java
similarity index 87%
copy from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
copy to plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeComponentProviderWrapper.java
index fd74dcc..84f5616 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderWrapper.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeComponentProviderWrapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2007 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
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - Initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.server.core.internal;
+package org.eclipse.wst.server.core.internal.facets;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,12 +17,13 @@
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.internal.Trace;
 /**
  * 
  */
 public class RuntimeComponentProviderWrapper {
 	private IConfigurationElement element;
-	private RuntimeComponentProviderDelegate delegate;
+	private RuntimeFacetComponentProviderDelegate delegate;
 
 	/**
 	 * Create a new runtime component handler.
@@ -97,10 +98,10 @@
 	/*
 	 * Loads the delegate class.
 	 */
-	protected RuntimeComponentProviderDelegate getDelegate() {
+	protected RuntimeFacetComponentProviderDelegate getDelegate() {
 		if (delegate == null) {
 			try {
-				delegate = (RuntimeComponentProviderDelegate) element.createExecutableExtension("class");
+				delegate = (RuntimeFacetComponentProviderDelegate) element.createExecutableExtension("class");
 			} catch (Throwable t) {
 				Trace.trace(Trace.SEVERE, "Could not create delegate " + toString() + ": " + t.getMessage());
 			}
@@ -109,7 +110,7 @@
 	}
 
 	/*
-	 * @see RuntimeComponentProviderDelegate#getRuntimeComponents(IRuntime)
+	 * @see RuntimeFacetComponentProviderDelegate#getRuntimeComponents(IRuntime)
 	 */
 	public List getComponents(IRuntime runtime) {
 		if (runtime == null)
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetComponentProviderDelegate.java
similarity index 88%
rename from plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
rename to plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetComponentProviderDelegate.java
index e5185f5..3a969ec 100644
--- a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/internal/RuntimeComponentProviderDelegate.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetComponentProviderDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
+ * Copyright (c) 2007 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
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - Initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.server.core.internal;
+package org.eclipse.wst.server.core.internal.facets;
 
 import java.util.List;
 
@@ -30,8 +30,8 @@
  * 
  * @plannedfor 2.0
  */
-public abstract class RuntimeComponentProviderDelegate {
-	public RuntimeComponentProviderDelegate() {
+public abstract class RuntimeFacetComponentProviderDelegate {
+	public RuntimeFacetComponentProviderDelegate() {
 		// default constructor
 	}
 
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetMapping.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetMapping.java
new file mode 100644
index 0000000..c12e9ec
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/facets/RuntimeFacetMapping.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.internal.facets;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+/**
+ * 
+ */
+public class RuntimeFacetMapping {
+	private IConfigurationElement element;
+
+	/**
+	 * Create a new runtime facet mapping.
+	 * 
+	 * @param element a configuration element
+	 */
+	public RuntimeFacetMapping(IConfigurationElement element) {
+		super();
+		this.element = element;
+	}
+
+	/**
+	 * 
+	 * @return the id
+	 */
+	public String getId() {
+		return element.getAttribute("id");
+	}
+
+	/**
+	 * 
+	 * @return the id
+	 */
+	public String getRuntimeTypeId() {
+		return element.getAttribute("runtimeTypeId");
+	}
+
+	/**
+	 * 
+	 * @return the id
+	 */
+	public String getVersion() {
+		return element.getAttribute("version");
+	}
+
+	/**
+	 * 
+	 * @return the id
+	 */
+	public String getRuntimeComponent() {
+		return element.getAttribute("runtime-component");
+	}
+
+	public String toString() {
+		return "RuntimeFacetMapping[" + getId() + "]";
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.http.core/META-INF/MANIFEST.MF
index 28ec686..5f06d1e 100644
--- a/plugins/org.eclipse.wst.server.http.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.http.core/META-INF/MANIFEST.MF
@@ -11,7 +11,6 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.commands;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.server.core;bundle-version="[1.0.204,2.0.0)",
- org.eclipse.debug.core;bundle-version="[3.3.0,4.0.0)"
+ org.eclipse.wst.server.core;bundle-version="[1.0.204,2.0.0)"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.http.core/plugin.xml b/plugins/org.eclipse.wst.server.http.core/plugin.xml
index 8a43f60..0c6fc3d 100644
--- a/plugins/org.eclipse.wst.server.http.core/plugin.xml
+++ b/plugins/org.eclipse.wst.server.http.core/plugin.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <plugin>
-   	<extension point="org.eclipse.wst.server.core.runtimeTypes">
+   <extension point="org.eclipse.wst.server.core.runtimeTypes">
 	    <runtimeType
 	       id="org.eclipse.wst.server.http.runtime"
 	       name="%runtimeTypeHttpLabel"
 	       description="%runtimeTypeHttpDescription"
+	       facetRuntimeComponent="org.eclipse.wst.server.http.runtime"
+	       facetRuntimeVersion="1.0"
 	       class="org.eclipse.wst.server.http.core.internal.HttpRuntime">
 	       <moduleType
 	         types="PHP"
@@ -53,88 +55,10 @@
 	    </supported>
   	</extension>
 
-  	<extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
-	   <runtimeFacetMapping
-	      runtimeTypeId="org.eclipse.wst.server.http.runtime"
-	      runtime-component="org.eclipse.wst.server.http.runtime"
-	      version="1.0"/>
-  	</extension>
-
    <extension point="org.eclipse.wst.server.core.launchableAdapters">
       <launchableAdapter
         id="org.eclipse.wst.server.http.web"
         class="org.eclipse.wst.server.http.core.internal.HttpLaunchableAdapterDelegate"
         typeIds="org.eclipse.wst.server.http.server"/>
    </extension>
-
-
-
-
-
-  <extension point="org.eclipse.wst.server.core.runtimeTypes">
-    <runtimeType
-       id="org.eclipse.wst.server.preview.runtime"
-       name="%previewRuntimeTypeName"
-       description="%previewRuntimeTypeDescription"
-       class="org.eclipse.wst.server.http.core.internal.preview.PreviewRuntime">
-       <moduleType
-         types="wst.web"
-         versions="1.0"/>
-    </runtimeType>
-  </extension>
-
-  <extension point="org.eclipse.wst.server.core.serverTypes">
-     <serverType
-       id="org.eclipse.wst.server.preview.server"
-       name="%previewServerTypeName"
-       description="%previewServerTypeDescription"
-       supportsRemoteHosts="false"
-       runtime="true"
-       initialState="stopped"
-       hasConfiguration="false"
-       launchModes="run,debug,profile"
-       launchConfigId="org.eclipse.wst.server.core.preview.launchConfigurationType"
-       runtimeTypeId="org.eclipse.wst.server.preview.runtime"
-       class="org.eclipse.wst.server.http.core.internal.preview.PreviewServer"
-       behaviourClass="org.eclipse.wst.server.http.core.internal.preview.PreviewServerBehaviour"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
-    <runtime-component-type
-       id="org.eclipse.wst.server.preview.runtime"/>
-
-    <runtime-component-version
-       type="org.eclipse.wst.server.preview.runtime"
-       version="1.0"/>
-
-    <supported>
-      <runtime-component
-         id="org.eclipse.wst.server.preview.runtime"
-         version="1.0"/>
-      <facet
-         id="wst.web"
-         version="1.0"/>
-    </supported>
-  </extension>
-
-  <extension point="org.eclipse.jst.server.core.runtimeFacetMappings">
-	  <runtimeFacetMapping
-	      runtimeTypeId="org.eclipse.wst.server.preview.runtime"
-	      runtime-component="org.eclipse.wst.server.preview.runtime"
-	      version="1.0"/>
-  </extension>
-
-  <extension point="org.eclipse.debug.core.launchConfigurationTypes">
-     <launchConfigurationType
-        id="org.eclipse.wst.server.core.preview.launchConfigurationType"
-        name="%previewLaunchConfigurationType"
-        delegate="org.eclipse.wst.server.http.core.internal.preview.PreviewLaunchConfigurationDelegate"
-        modes="run,debug,profile"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.server.core.launchableAdapters">
-    <launchableAdapter
-      id="org.eclipse.wst.server.core.preview.server"
-      class="org.eclipse.wst.server.http.core.internal.preview.PreviewLaunchableAdapterDelegate"/>
-  </extension>
-</plugin>
+</plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/IMemento.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/IMemento.java
deleted file mode 100644
index f3dea63..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/IMemento.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2003, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- **********************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.util.List;
-/**
- * Interface to a memento used for saving the important state of an object
- * in a form that can be persisted in the file system.
- * <p>
- * Mementos were designed with the following requirements in mind:
- * <ol>
- *  <li>Certain objects need to be saved and restored across platform sessions.
- *    </li>
- *  <li>When an object is restored, an appropriate class for an object might not
- *    be available. It must be possible to skip an object in this case.</li>
- *  <li>When an object is restored, the appropriate class for the object may be
- *    different from the one when the object was originally saved. If so, the
- *    new class should still be able to read the old form of the data.</li>
- * </ol>
- * </p>
- * <p>
- * Mementos meet these requirements by providing support for storing a
- * mapping of arbitrary string keys to primitive values, and by allowing
- * mementos to have other mementos as children (arranged into a tree).
- * A robust external storage format based on XML is used.
- * </p><p>
- * The key for an attribute may be any alpha numeric value.  However, the
- * value of <code>TAG_ID</code> is reserved for internal use.
- * </p><p>
- * This interface is not intended to be implemented by clients.
- * </p>
- */
-public interface IMemento {
-	/**
-	 * Special reserved key used to store the memento id 
-	 * (value <code>"org.eclipse.ui.id"</code>).
-	 *
-	 * @see #getId
-	 */
-	public static final String TAG_ID = "IMemento.internal.id"; //$NON-NLS-1$
-
-	/**
-	 * Creates a new child of this memento with the given type.
-	 * <p>
-	 * The <code>getChild</code> and <code>getChildren</code> methods
-	 * are used to retrieve children of a given type.
-	 * </p>
-	 *
-	 * @param type the type
-	 * @return a new child memento
-	 * @see #getChild
-	 * @see #getChildren
-	 */
-	public IMemento createChild(String type);
-	
-	/**
-	 * Creates a new child of this memento with the given type and id.
-	 * The id is stored in the child memento (using a special reserved
-	 * key, <code>TAG_ID</code>) and can be retrieved using <code>getId</code>.
-	 * <p>
-	 * The <code>getChild</code> and <code>getChildren</code> methods
-	 * are used to retrieve children of a given type.
-	 * </p>
-	 *
-	 * @param type the type
-	 * @param id the child id
-	 * @return a new child memento with the given type and id
-	 * @see #getId
-	 */
-	public IMemento createChild(String type, String id);
-	
-	/**
-	 * Returns the first child with the given type id.
-	 *
-	 * @param type the type id
-	 * @return the first child with the given type
-	 */
-	public IMemento getChild(String type);
-	
-	/**
-	 * Returns all children with the given type id.
-	 *
-	 * @param type the type id
-	 * @return the list of children with the given type
-	 */
-	public IMemento[] getChildren(String type);
-	
-	/**
-	 * Returns the floating point value of the given key.
-	 *
-	 * @param key the key
-	 * @return the value, or <code>null</code> if the key was not found or was found
-	 *   but was not a floating point number
-	 */
-	public Float getFloat(String key);
-	
-	/**
-	 * Returns the id for this memento.
-	 *
-	 * @return the memento id, or <code>null</code> if none
-	 * @see #createChild(java.lang.String,java.lang.String)
-	 */
-	public String getId();
-	
-	/**
-	 * Returns the name for this memento.
-	 *
-	 * @return the memento name, or <code>null</code> if none
-	 * @see #createChild(java.lang.String,java.lang.String)
-	 */
-	public String getName();
-
-	/**
-	 * Returns the integer value of the given key.
-	 *
-	 * @param key the key
-	 * @return the value, or <code>null</code> if the key was not found or was found
-	 *   but was not an integer
-	 */
-	public Integer getInteger(String key);
-
-	/**
-	 * Returns the string value of the given key.
-	 *
-	 * @param key the key
-	 * @return the value, or <code>null</code> if the key was not found or was found
-	 *  but was not an integer
-	 */
-	public String getString(String key);
-
-	/**
-	 * Returns the boolean value of the given key.
-	 *
-	 * @param key the key
-	 * @return the value, or <code>null</code> if the key was not found or was found
-	 *  but was not a boolean
-	 */
-	public Boolean getBoolean(String key);
-	
-	/**
-	 * Return the list of names.
-	 * 
-	 * @return a possibly empty list of names
-	 */
-	public List getNames();
-	
-	/**
-	 * Sets the value of the given key to the given floating point number.
-	 *
-	 * @param key the key
-	 * @param value the value
-	 */
-	public void putFloat(String key, float value);
-	
-	/**
-	 * Sets the value of the given key to the given integer.
-	 *
-	 * @param key the key
-	 * @param value the value
-	 */
-	public void putInteger(String key, int value);
-	
-	/**
-	 * Sets the value of the given key to the given boolean value.
-	 *
-	 * @param key the key
-	 * @param value the value
-	 */
-	public void putBoolean(String key, boolean value);
-
-	/**
-	 * Copy the attributes and children from  <code>memento</code>
-	 * to the receiver.
-	 *
-	 * @param memento the IMemento to be copied.
-	 */
-	public void putMemento(IMemento memento);
-
-	/**
-	 * Sets the value of the given key to the given string.
-	 *
-	 * @param key the key
-	 * @param value the value
-	 */
-	public void putString(String key, String value);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PingThread.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PingThread.java
deleted file mode 100644
index 4dc2515..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PingThread.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.io.FileNotFoundException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.eclipse.wst.server.http.core.internal.Trace;
-import org.eclipse.wst.server.core.IServer;
-/**
- * Thread used to ping server to test when it is started.
- */
-public class PingThread {
-	// delay before pinging starts
-	private static final int PING_DELAY = 2000;
-
-	// delay between pings
-	private static final int PING_INTERVAL = 250;
-
-	// maximum number of pings before giving up
-	private int maxPings = 40;
-
-	private boolean stop = false;
-	private String url;
-	private IServer server;
-	private PreviewServerBehaviour behaviour;
-
-	/**
-	 * Create a new PingThread.
-	 * 
-	 * @param server
-	 * @param url
-	 * @param behaviour
-	 */
-	public PingThread(IServer server, String url, PreviewServerBehaviour behaviour) {
-		super();
-		this.server = server;
-		this.url = url;
-		this.behaviour = behaviour;
-		Thread t = new Thread("Preview Ping Thread") {
-			public void run() {
-				ping();
-			}
-		};
-		t.setDaemon(true);
-		t.start();
-	}
-
-	/**
-	 * Ping the server until it is started. Then set the server
-	 * state to STATE_STARTED.
-	 */
-	protected void ping() {
-		int count = 0;
-		try {
-			Thread.sleep(PING_DELAY);
-		} catch (Exception e) {
-			// ignore
-		}
-		while (!stop) {
-			try {
-				if (count == maxPings) {
-					try {
-						server.stop(false);
-					} catch (Exception e) {
-						Trace.trace(Trace.FINEST, "Ping: could not stop server");
-					}
-					stop = true;
-					break;
-				}
-				count++;
-				
-				Trace.trace(Trace.FINEST, "Ping: pinging " + count);
-				URL pingUrl = new URL(url);
-				URLConnection conn = pingUrl.openConnection();
-				((HttpURLConnection)conn).getResponseCode();
-	
-				// ping worked - server is up
-				if (!stop) {
-					Trace.trace(Trace.FINEST, "Ping: success");
-					Thread.sleep(200);
-					behaviour.setServerStarted();
-				}
-				stop = true;
-			} catch (FileNotFoundException fe) {
-				try {
-					Thread.sleep(200);
-				} catch (Exception e) {
-					// ignore
-				}
-				behaviour.setServerStarted();
-				stop = true;
-			} catch (Exception e) {
-				Trace.trace(Trace.FINEST, "Ping: failed");
-				// pinging failed
-				if (!stop) {
-					try {
-						Thread.sleep(PING_INTERVAL);
-					} catch (InterruptedException e2) {
-						// ignore
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Tell the pinging to stop.
-	 */
-	public void stop() {
-		Trace.trace(Trace.FINEST, "Ping: stopping");
-		stop = true;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchConfigurationDelegate.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchConfigurationDelegate.java
deleted file mode 100644
index 2aa0132..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
-import org.eclipse.osgi.service.environment.Constants;
-import org.eclipse.wst.server.http.core.internal.HttpCorePlugin;
-import org.eclipse.wst.server.http.core.internal.Trace;
-
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerUtil;
-import org.osgi.framework.Bundle;
-/**
- * 
- */
-public class PreviewLaunchConfigurationDelegate extends LaunchConfigurationDelegate {
-	private static final String[] REQUIRED_BUNDLE_IDS = new String[] {
-		"org.eclipse.core.runtime",
-		"org.apache.commons.logging",
-		"javax.servlet",
-		"javax.servlet.jsp",
-		"org.mortbay.jetty",
-		"org.eclipse.wst.server.preview"
-	};
-
-	private static final String[] fgCandidateJavaFiles = {"javaw", "javaw.exe", "java",
-		"java.exe", "j9w", "j9w.exe", "j9", "j9.exe"};
-	private static final String[] fgCandidateJavaLocations = {"bin" + File.separatorChar,
-		"jre" + File.separatorChar + "bin" + File.separatorChar};
-
-	private static final String MAIN_CLASS = "org.eclipse.wst.server.preview.internal.PreviewStarter";
-
-	public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
-		IServer server = ServerUtil.getServer(configuration);
-		if (server == null) {
-			Trace.trace(Trace.FINEST, "Launch configuration could not find server");
-			// throw CoreException();
-			return;
-		}
-		
-		PreviewServerBehaviour previewServer = (PreviewServerBehaviour) server.loadAdapter(PreviewServerBehaviour.class, null);
-		
-		int size = REQUIRED_BUNDLE_IDS.length;
-		//String[] jars = new String[size];
-		StringBuffer cp = new StringBuffer();
-		for (int i = 0; i < size; i++) {
-			Bundle b = Platform.getBundle(REQUIRED_BUNDLE_IDS[i]);
-			IPath path = null;
-			if (b != null)
-				path = PreviewRuntime.getJarredPluginPath(b);
-			if (path == null)
-				throw new CoreException(new Status(IStatus.ERROR, HttpCorePlugin.PLUGIN_ID, "Could not find required bundle " + REQUIRED_BUNDLE_IDS[i]));
-			
-			if (i == 5 && path.append("bin").toFile().exists())
-				path = path.append("bin");
-			
-			if (i > 0)
-				cp.append(File.pathSeparator);
-			cp.append(path.toOSString());
-		}
-		
-		List cmds = new ArrayList();
-		
-		// jre
-		File java = getJavaExecutable();
-		if (java == null)
-			throw new CoreException(new Status(IStatus.ERROR, HttpCorePlugin.PLUGIN_ID, "Could not find JRE executable"));
-		
-		cmds.add(java.getAbsolutePath());
-		
-		cmds.add("-classpath");
-		cmds.add(cp.toString());
-		
-		cmds.add(MAIN_CLASS);
-		
-		cmds.add(previewServer.getTempDirectory().append("preview.xml").toOSString());
-		
-		//setDefaultSourceLocator(launch, configuration);
-		
-		// launch the configuration
-		previewServer.setupLaunch(launch, mode, monitor);
-		
-		try {
-			String[] cmdLine = new String[cmds.size()];
-			cmds.toArray(cmdLine);
-			Process p = DebugPlugin.exec(cmdLine, null);
-			if (p != null) {
-				IProcess pr = DebugPlugin.newProcess(launch, p, "Preview!");
-				if (pr != null)
-					launch.addProcess(pr);
-			}
-			previewServer.setProcess(launch.getProcesses()[0]);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Problem creating preview process");
-		}
-	}
-
-	protected static File getJavaExecutable() {
-		// do not detect on the Mac OS
-		if (Platform.getOS().equals(Constants.OS_MACOSX))
-			return null;
-		
-		// Retrieve the 'java.home' system property.  If that directory doesn't exist, 
-		// return null.
-		File javaHome; 
-		try {
-			javaHome = new File(System.getProperty("java.home")).getCanonicalFile();
-		} catch (IOException e) {
-			return null;
-		}
-		if (!javaHome.exists())
-			return null;
-		
-		// Find the 'java' executable file under the java home directory.  If it can't be
-		// found, return null.
-		return findJavaExecutable(javaHome);
-	}
-
-	protected static File findJavaExecutable(File vmInstallLocation) {
-		// Try each candidate in order.  The first one found wins.  Thus, the order
-		// of fgCandidateJavaLocations and fgCandidateJavaFiles is significant.
-		for (int i = 0; i < fgCandidateJavaFiles.length; i++) {
-			for (int j = 0; j < fgCandidateJavaLocations.length; j++) {
-				File javaFile = new File(vmInstallLocation, fgCandidateJavaLocations[j] + fgCandidateJavaFiles[i]);
-				if (javaFile.isFile()) {
-					return javaFile;
-				}				
-			}
-		}		
-		return null;							
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchableAdapterDelegate.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchableAdapterDelegate.java
deleted file mode 100644
index dadcaf7..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewLaunchableAdapterDelegate.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.server.http.core.internal.Trace;
-import org.eclipse.wst.server.core.IModuleArtifact;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.model.LaunchableAdapterDelegate;
-import org.eclipse.wst.server.core.util.HttpLaunchable;
-import org.eclipse.wst.server.core.util.WebResource;
-
-public class PreviewLaunchableAdapterDelegate extends LaunchableAdapterDelegate {
-	/*
-	 * @see LaunchableAdapterDelegate#getLaunchable(IServer, IModuleArtifact)
-	 */
-	public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) throws CoreException {
-		if (server == null || moduleArtifact == null)
-			return null;
-		
-		PreviewServer server2 = (PreviewServer) server.loadAdapter(PreviewServer.class, null);
-		if (server2 == null)
-			return null;
-		
-		try {
-			URL url = server2.getModuleRootURL(moduleArtifact.getModule());
-			
-			if (moduleArtifact instanceof WebResource) {
-				WebResource resource = (WebResource) moduleArtifact;
-				String path = resource.getPath().toString();
-				
-				if (path.startsWith("/"))
-					path = path.substring(1);
-				url = new URL(url.toExternalForm() + "/" + path);
-			}
-			return new HttpLaunchable(url);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error in launchable adapter", e);
-		}
-		
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewRuntime.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewRuntime.java
deleted file mode 100644
index 5f13ed7..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewRuntime.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.io.IOException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.wst.server.core.model.RuntimeDelegate;
-import org.osgi.framework.Bundle;
-/**
- * 
- */
-public class PreviewRuntime extends RuntimeDelegate {
-	public static final String ID = "org.eclipse.jst.server.preview.runtime";
-
-	/**
-	 * Create a new preview runtime.
-	 */
-	public PreviewRuntime() {
-		// do nothing
-	}
-
-	/**
-	 * Returns the path that corresponds to the specified bundle.
-	 * 
-	 * @return a path
-	 */
-	protected static Path getPluginPath(Bundle bundle) {
-		try {
-			URL installURL = bundle.getEntry("/");
-			URL localURL = FileLocator.toFileURL(installURL);
-			return new Path(localURL.getFile());
-		} catch (IOException ioe) {
-			return null;
-		}
-	}
-
-	protected static IPath getJarredPluginPath(Bundle bundle) {
-		Path runtimeLibFullPath = null;
-		String jarPluginLocation = bundle.getLocation().substring(7);
-		
-		// handle case where jars are installed outside of eclipse installation
-		Path jarPluginPath = new Path(jarPluginLocation);
-		if (jarPluginPath.isAbsolute())
-			runtimeLibFullPath = jarPluginPath;
-		// handle normal case where all plugins under eclipse install
-		else {
-			int ind = jarPluginLocation.lastIndexOf(":");
-			if (ind > 0)
-				jarPluginLocation = jarPluginLocation.substring(ind+1);
-			
-			String installPath = Platform.getInstallLocation().getURL().getPath();
-			runtimeLibFullPath = new Path(installPath+"/"+jarPluginLocation);
-		}
-		return runtimeLibFullPath;
-	}
-
-	/**
-	 * @see RuntimeDelegate#setDefaults(IProgressMonitor)
-	 */
-	public void setDefaults(IProgressMonitor monitor) {
-		getRuntimeWorkingCopy().setLocation(new Path(""));
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServer.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServer.java
deleted file mode 100644
index fffa9d0..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServer.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.wst.server.http.core.internal.HttpCorePlugin;
-import org.eclipse.wst.server.http.core.internal.Messages;
-import org.eclipse.wst.server.http.core.internal.Trace;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerType;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.model.IURLProvider;
-import org.eclipse.wst.server.core.model.ServerDelegate;
-import org.eclipse.wst.server.core.util.IStaticWeb;
-/**
- * Generic HTTP server.
- */
-public class PreviewServer extends ServerDelegate implements IURLProvider {
-	public static final String ID = "org.eclipse.jst.server.preview.server";
-
-	public static final String PROPERTY_PORT = "port";
-
-	/**
-	 * PreviewServer.
-	 */
-	public PreviewServer() {
-		super();
-	}
-
-	protected void initialize() {
-		// do nothing
-	}
-
-	public PreviewRuntime getPreviewRuntime() {
-		if (getServer().getRuntime() == null)
-			return null;
-		
-		return (PreviewRuntime) getServer().getRuntime().loadAdapter(PreviewRuntime.class, null);
-	}
-
-	/**
-	 * Return the root URL of this module.
-	 * 
-	 * @param module a module
-	 * @return java.net.URL
-	 */
-	public URL getModuleRootURL(IModule module) {
-		try {
-			String base = "http://localhost";
-			
-			int port = getPort();
-			URL url = null;
-			if (port == 80)
-				url = new URL(base + "/");
-			else
-				url = new URL(base + ":" + port + "/");
-			
-			String type = module.getModuleType().getId();
-			if ("wst.web".equals(type)) {
-				IStaticWeb staticWeb = (IStaticWeb) module.loadAdapter(IStaticWeb.class, null);
-				return new URL(url, staticWeb.getContextRoot());
-			}
-			return url;
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Could not get root URL", e);
-			return null;
-		}
-	}
-
-	/*
-	 * Returns the child module(s) of this module.
-	 */
-	public IModule[] getChildModules(IModule[] module) {
-		return new IModule[0];
-	}
-
-	/*
-	 * Returns the root module(s) of this module.
-	 */
-	public IModule[] getRootModules(IModule module) throws CoreException {
-		return new IModule[] { module };
-	}
-
-	/**
-	 * Returns true if the given project is supported by this server, and false
-	 * otherwise.
-	 * 
-	 * @param add modules
-	 * @param remove modules
-	 * @return the status
-	 */
-	public IStatus canModifyModules(IModule[] add, IModule[] remove) {
-		return new Status(IStatus.OK, HttpCorePlugin.PLUGIN_ID, 0, Messages.canModifyModules, null);
-	}
-
-	public ServerPort[] getServerPorts() {
-		int port = getPort();
-		ServerPort[] ports = { new ServerPort("http", Messages.httpPort, port, "http") };
-		return ports;
-	}
-
-	public int getPort() {
-		return getAttribute(PreviewServer.PROPERTY_PORT, 8080);
-	}
-
-	public void setPort(int port) {
-		setAttribute(PreviewServer.PROPERTY_PORT, port);
-	}
-
-	public static IServer createPreviewServer(String serverName) {
-		try {
-			NullProgressMonitor monitor = new NullProgressMonitor();
-			IRuntimeType runtimeType = ServerCore.findRuntimeType(PreviewRuntime.ID);
-			IRuntimeWorkingCopy runtimeCopy = runtimeType.createRuntime(PreviewRuntime.ID, monitor);
-			IRuntime runtime = runtimeCopy.save(true, monitor);
-			
-			IServerType serverType = ServerCore.findServerType(ID);
-			IServerWorkingCopy workingCopy = serverType.createServer(ID, null, runtime, monitor);
-			workingCopy.setName(serverName);
-			workingCopy.setHost("localhost");
-			return workingCopy.save(true, monitor);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error creating server", e);
-		}
-		
-		return null;
-	}
-
-	public static IServer findPreviewServer(String id) {
-		IServer[] servers = ServerCore.getServers();
-		for (int i = 0; i < servers.length; i++) {
-			if (servers[i].getId().equals(id)) {
-				return servers[i];
-			}
-		}
-		return null;
-	}
-
-	public void modifyModules(IModule[] add, IModule[] remove, IProgressMonitor monitor) throws CoreException {
-		// do nothing
-	}
-
-	/**
-	 * Return a string representation of this object.
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return "PreviewServer";
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServerBehaviour.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServerBehaviour.java
deleted file mode 100644
index 980aaba..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewServerBehaviour.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.io.IOException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IDebugEventSetListener;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.model.IModuleResource;
-import org.eclipse.wst.server.core.model.IModuleResourceDelta;
-import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
-import org.eclipse.wst.server.core.util.IStaticWeb;
-import org.eclipse.wst.server.core.util.PublishUtil;
-import org.eclipse.wst.server.core.util.SocketUtil;
-import org.eclipse.wst.server.http.core.internal.HttpCorePlugin;
-import org.eclipse.wst.server.http.core.internal.Messages;
-import org.eclipse.wst.server.http.core.internal.Trace;
-/**
- * Generic Http server.
- */
-public class PreviewServerBehaviour extends ServerBehaviourDelegate {
-	// the thread used to ping the server to check for startup
-	protected transient PingThread ping = null;
-	protected transient IProcess process;
-	protected transient IDebugEventSetListener processListener;
-
-	/**
-	 * PreviewServer.
-	 */
-	public PreviewServerBehaviour() {
-		super();
-	}
-
-	public void initialize(IProgressMonitor monitor) {
-		// do nothing
-	}
-
-	public PreviewRuntime getPreviewRuntime() {
-		if (getServer().getRuntime() == null)
-			return null;
-
-		return (PreviewRuntime) getServer().getRuntime().loadAdapter(PreviewRuntime.class, null);
-	}
-
-	public PreviewServer getPreviewServer() {
-		return (PreviewServer) getServer().getAdapter(PreviewServer.class);
-	}
-
-	/**
-	 * Returns the runtime base path for relative paths in the server
-	 * configuration.
-	 * 
-	 * @return the base path
-	 */
-	public IPath getRuntimeBaseDirectory() {
-		return getServer().getRuntime().getLocation();
-	}
-
-	/**
-	 * Setup for starting the server.
-	 * 
-	 * @param launch ILaunch
-	 * @param launchMode String
-	 * @param monitor IProgressMonitor
-	 * @throws CoreException if anything goes wrong
-	 */
-	protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException {
-		// check that ports are free
-		ServerPort[] ports = getPreviewServer().getServerPorts();
-		int port = ports[0].getPort();
-		
-		if (SocketUtil.isPortInUse(port, 5))
-			throw new CoreException(new Status(IStatus.ERROR, HttpCorePlugin.PLUGIN_ID, 0, NLS.bind(Messages.errorPortInUse, new String[] {port + "", getServer().getName()}), null));
-		
-		// generate preview config file
-		XMLMemento memento = XMLMemento.createWriteRoot("server");
-		memento.putInteger("port", port);
-		
-		IModule[] modules = getServer().getModules();
-		int size = modules.length;
-		for (int i = 0; i < size; i++) {
-			IMemento mod = memento.createChild("module");
-			mod.putString("name", modules[i].getName());
-			String type = modules[i].getModuleType().getId();
-			if ("wst.web".equals(type)) {
-				IStaticWeb staticWeb = (IStaticWeb) modules[i].loadAdapter(IStaticWeb.class, null);
-				mod.putString("context", staticWeb.getContextRoot());
-				mod.putString("type", "static");
-			}
-			mod.putString("path", getModulePublishDirectory(modules[i]).toPortableString());
-		}
-		try {
-			memento.saveToFile(getTempDirectory().append("preview.xml").toOSString());
-		} catch (IOException e) {
-			Trace.trace(Trace.SEVERE, "Could not write preview config", e);
-			throw new CoreException(new Status(IStatus.ERROR, HttpCorePlugin.PLUGIN_ID, 0, "Could not write preview configuration", null));
-		}
-		
-		setServerRestartState(false);
-		setServerState(IServer.STATE_STARTING);
-		setMode(launchMode);
-		
-		// ping server to check for startup
-		try {
-			String url = "http://localhost";
-			if (port != 80)
-				url += ":" + port;
-			ping = new PingThread(getServer(), url, this);
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Can't ping for Tomcat startup.");
-		}
-	}
-
-	protected void setProcess(final IProcess newProcess) {
-		if (process != null)
-			return;
-		
-		process = newProcess;
-		if (processListener != null)
-			DebugPlugin.getDefault().removeDebugEventListener(processListener);
-		if (newProcess == null)
-			return;
-		
-		processListener = new IDebugEventSetListener() {
-			public void handleDebugEvents(DebugEvent[] events) {
-				if (events != null) {
-					int size = events.length;
-					for (int i = 0; i < size; i++) {
-						Object obj = events[i].getSource();
-						
-						if (!(obj instanceof IDebugTarget))
-							continue;
-						
-						IDebugTarget target = (IDebugTarget) obj;
-						IProcess targetProcess = target.getProcess();
-						
-						if (process != null && process.equals(targetProcess)
-								&& events[i].getKind() == DebugEvent.TERMINATE) {
-							DebugPlugin.getDefault().removeDebugEventListener(this);
-							stopImpl();
-						}
-					}
-				}
-			}
-		};
-		DebugPlugin.getDefault().addDebugEventListener(processListener);
-	}
-
-	protected void setServerStarted() {
-		setServerState(IServer.STATE_STARTED);
-	}
-
-	protected void stopImpl() {
-		if (ping != null) {
-			ping.stop();
-			ping = null;
-		}
-		if (process != null) {
-			process = null;
-			DebugPlugin.getDefault().removeDebugEventListener(processListener);
-			processListener = null;
-		}
-		setServerState(IServer.STATE_STOPPED);
-	}
-
-	protected void publishServer(int kind, IProgressMonitor monitor) throws CoreException {
-		monitor = ProgressUtil.getMonitorFor(monitor);
-		monitor.done();
-
-		setServerPublishState(IServer.PUBLISH_STATE_NONE);
-	}
-
-	/*
-	 * Publishes the given module to the server.
-	 */
-	protected void publishModule(int kind, int deltaKind, IModule[] moduleTree, IProgressMonitor monitor) throws CoreException {
-		IModule module = moduleTree[moduleTree.length - 1]; 
-		IPath to = getModulePublishDirectory(module);
-		
-		if (kind == IServer.PUBLISH_CLEAN || deltaKind == ServerBehaviourDelegate.REMOVED) {
-			IStatus[] status = PublishUtil.deleteDirectory(to.toFile(), monitor);
-			throwException(status);
-		}
-		
-		IModuleResource[] res = getResources(moduleTree);
-		IStatus[] status = PublishUtil.publishSmart(res, to, monitor);
-		throwException(status);
-		
-		setModulePublishState(moduleTree, IServer.PUBLISH_STATE_NONE);
-	}
-
-	/**
-	 * Utility method to throw a CoreException based on the contents of a list of
-	 * error and warning status.
-	 * 
-	 * @param status a List containing error and warning IStatus
-	 * @throws CoreException
-	 */
-	private static void throwException(IStatus[] status) throws CoreException {
-		if (status == null || status.length == 0)
-			return;
-		
-		if (status.length == 1)
-			throw new CoreException(status[0]);
-		
-		String message = Messages.errorPublish;
-		MultiStatus status2 = new MultiStatus(HttpCorePlugin.PLUGIN_ID, 0, status, message, null);
-		throw new CoreException(status2);
-	}
-
-	public void restart(String launchMode) throws CoreException {
-		setServerState(IServer.STATE_STOPPED);
-		setServerState(IServer.STATE_STARTED);
-	}
-
-	/**
-	 * Cleanly shuts down and terminates the server.
-	 * 
-	 * @param force <code>true</code> to kill the server
-	 */
-	public void stop(boolean force) {
-		if (force) {
-			terminate();
-			return;
-		}
-		int state = getServer().getServerState();
-		if (state == IServer.STATE_STOPPED)
-			return;
-		else if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) {
-			terminate();
-			return;
-		}
-		
-		// should really try to stop normally
-		terminate();
-	}
-
-	/**
-	 * Terminates the server.
-	 */
-	protected void terminate() {
-		if (getServer().getServerState() == IServer.STATE_STOPPED)
-			return;
-		
-		try {
-			setServerState(IServer.STATE_STOPPING);
-			Trace.trace(Trace.FINEST, "Killing the HTTP process");
-			if (process != null && !process.isTerminated())
-				process.terminate();
-			
-			stopImpl();
-		} catch (Exception e) {
-			Trace.trace(Trace.SEVERE, "Error killing the process", e);
-		}
-	}
-
-	protected IPath getTempDirectory() {
-		return super.getTempDirectory();
-	}
-
-	/**
-	 * Returns the module's publish path.
-	 * 
-	 * @param module a module
-	 * @return the publish directory for the module
-	 */
-	protected IPath getModulePublishDirectory(IModule module) {
-		return getTempDirectory().append(module.getName());
-	}
-
-	/**
-	 * Return a string representation of this object.
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return "PreviewServer";
-	}
-
-	protected IModuleResourceDelta[] getPublishedResourceDelta(IModule[] module) {
-		return super.getPublishedResourceDelta(module);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewStartup.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewStartup.java
deleted file mode 100644
index dd3ee44..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/PreviewStartup.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.wst.server.http.core.internal.Trace;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerType;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.internal.IStartup;
-
-public class PreviewStartup implements IStartup {
-	private static final String ID = "xyz"; 
-
-	public void startup() {
-		// create runtime
-		IRuntime[] runtimes = ServerCore.getRuntimes();
-		IRuntime runtime = null;
-		
-		int size = runtimes.length;
-		for (int i = 0; i < size; i++) {
-			if (runtimes[i].getRuntimeType() != null && PreviewRuntime.ID.equals(runtimes[i].getRuntimeType().getId())) {
-				if (ID.equals(runtimes[i].getId()))
-					runtime = runtimes[i];
-			}
-		}
-		
-		if (runtime == null) {
-			try {
-				IRuntimeType runtimeType = ServerCore.findRuntimeType(PreviewRuntime.ID);
-				IRuntimeWorkingCopy wc = runtimeType.createRuntime(ID, null);
-				wc.setName("My Preview");
-				wc.setReadOnly(true);
-				runtime = wc.save(true, null);
-			} catch (CoreException ce) {
-				Trace.trace(Trace.WARNING, "Could not create default preview runtime");
-			}
-		}
-		
-		// create server
-		IServer[] servers = ServerCore.getServers();
-		
-		boolean found = false;
-		size = servers.length;
-		for (int i = 0; i < size; i++) {
-			if (servers[i].getServerType() != null && PreviewServer.ID.equals(servers[i].getServerType().getId())) {
-				if (ID.equals(servers[i].getId()))
-					found = true;
-			}
-		}
-		
-		if (!found) {
-			try {
-				IServerType serverType = ServerCore.findServerType(PreviewServer.ID);
-				IServerWorkingCopy wc = serverType.createServer(ID, null, runtime, null);
-				wc.setName("My preview");
-				wc.setHost("localhost");
-				wc.setReadOnly(true);
-				wc.save(true, null);
-			} catch (CoreException ce) {
-				Trace.trace(Trace.WARNING, "Could not create default preview server");
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/ProgressUtil.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/ProgressUtil.java
deleted file mode 100644
index b327474..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/ProgressUtil.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import org.eclipse.core.runtime.*;
-/**
- * Progress Monitor utility.
- */
-public class ProgressUtil {
-	/**
-	 * ProgressUtil constructor comment.
-	 */
-	private ProgressUtil() {
-		super();
-	}
-
-	/**
-	 * Return a valid progress monitor.
-	 *
-	 * @param monitor org.eclipse.core.runtime.IProgressMonitor
-	 * @return org.eclipse.core.runtime.IProgressMonitor
-	 */
-	public static IProgressMonitor getMonitorFor(IProgressMonitor monitor) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		return monitor;
-	}
-
-	/**
-	 * Return a sub-progress monitor with the given amount on the
-	 * current progress monitor.
-	 *
-	 * @param monitor org.eclipse.core.runtime.IProgressMonitor
-	 * @param ticks int
-	 * @return org.eclipse.core.runtime.IProgressMonitor
-	 */
-	public static IProgressMonitor getSubMonitorFor(IProgressMonitor monitor, int ticks) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks);
-	}
-
-	/**
-	 * Return a sub-progress monitor with the given amount on the
-	 * current progress monitor.
-	 *
-	 * @param monitor org.eclipse.core.runtime.IProgressMonitor
-	 * @param ticks a number of ticks
-	 * @param style a style
-	 * @return org.eclipse.core.runtime.IProgressMonitor
-	 */
-	public static IProgressMonitor getSubMonitorFor(IProgressMonitor monitor, int ticks, int style) {
-		if (monitor == null)
-			return new NullProgressMonitor();
-		if (monitor instanceof NullProgressMonitor)
-			return monitor;
-		return new SubProgressMonitor(monitor, ticks, style);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/XMLMemento.java b/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/XMLMemento.java
deleted file mode 100644
index be13600..0000000
--- a/plugins/org.eclipse.wst.server.http.core/src/org/eclipse/wst/server/http/core/internal/preview/XMLMemento.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.core.internal.preview;
-
-import java.io.*;
-import java.util.*;
-
-import org.w3c.dom.*;
-import org.xml.sax.*;
-
-import javax.xml.parsers.*;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-/**
- * A Memento is a class independent container for persistence
- * info.  It is a reflection of 3 storage requirements.
- *
- * 1)   We need the ability to persist an object and restore it.  
- * 2)   The class for an object may be absent.  If so we would 
- *      like to skip the object and keep reading. 
- * 3)   The class for an object may change.  If so the new class 
- *      should be able to read the old persistence info.
- *
- * We could ask the objects to serialize themselves into an 
- * ObjectOutputStream, DataOutputStream, or Hashtable.  However 
- * all of these approaches fail to meet the second requirement.
- *
- * Memento supports binary persistance with a version ID.
- */
-public final class XMLMemento implements IMemento {
-	private Document factory;
-	private Element element;
-
-	/**
-	 * Answer a memento for the document and element.  For simplicity
-	 * you should use createReadRoot and createWriteRoot to create the initial
-	 * mementos on a document.
-	 */
-	private XMLMemento(Document doc, Element el) {
-		factory = doc;
-		element = el;
-	}
-
-	/**
-	 * @see IMemento#createChild(String)
-	 */
-	public IMemento createChild(String type) {
-		Element child = factory.createElement(type);
-		element.appendChild(child);
-		return new XMLMemento(factory, child);
-	}
-
-	/**
-	 * @see IMemento#createChild(String, String)
-	 */
-	public IMemento createChild(String type, String id) {
-		Element child = factory.createElement(type);
-		child.setAttribute(TAG_ID, id);
-		element.appendChild(child);
-		return new XMLMemento(factory, child);
-	}
-
-	/**
-	 * Create a Document from a Reader and answer a root memento for reading 
-	 * a document.
-	 */
-	protected static XMLMemento createReadRoot(InputStream in) {
-		Document document = null;
-		try {
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder parser = factory.newDocumentBuilder();
-			document = parser.parse(new InputSource(in));
-			Node node = document.getFirstChild();
-			if (node instanceof Element)
-				return new XMLMemento(document, (Element) node);
-		} catch (Exception e) {
-			// ignore
-		} finally {
-			try {
-				in.close();
-			} catch (Exception e) {
-				// ignore
-			}
-		}
-		return null;
-	}
-	
-	/**
-	 * Answer a root memento for writing a document.
-	 * 
-	 * @param type a type
-	 * @return a memento
-	 */
-	public static XMLMemento createWriteRoot(String type) {
-		Document document;
-		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
-			Element element = document.createElement(type);
-			document.appendChild(element);
-			return new XMLMemento(document, element);            
-		} catch (ParserConfigurationException e) {
-			throw new Error(e);
-		}
-	}
-	
-	/*
-	 * @see IMemento
-	 */
-	public IMemento getChild(String type) {
-		// Get the nodes.
-		NodeList nodes = element.getChildNodes();
-		int size = nodes.getLength();
-		if (size == 0)
-			return null;
-	
-		// Find the first node which is a child of this node.
-		for (int nX = 0; nX < size; nX ++) {
-			Node node = nodes.item(nX);
-			if (node instanceof Element) {
-				Element element2 = (Element)node;
-				if (element2.getNodeName().equals(type))
-					return new XMLMemento(factory, element2);
-			}
-		}
-	
-		// A child was not found.
-		return null;
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public IMemento [] getChildren(String type) {
-		// Get the nodes.
-		NodeList nodes = element.getChildNodes();
-		int size = nodes.getLength();
-		if (size == 0)
-			return new IMemento[0];
-	
-		// Extract each node with given type.
-		ArrayList list = new ArrayList(size);
-		for (int nX = 0; nX < size; nX ++) {
-			Node node = nodes.item(nX);
-			if (node instanceof Element) {
-				Element element2 = (Element)node;
-				if (element2.getNodeName().equals(type))
-					list.add(element2);
-			}
-		}
-	
-		// Create a memento for each node.
-		size = list.size();
-		IMemento [] results = new IMemento[size];
-		for (int x = 0; x < size; x ++) {
-			results[x] = new XMLMemento(factory, (Element)list.get(x));
-		}
-		return results;
-	}
-
-	/**
-	 * Return the contents of this memento as a byte array.
-	 *
-	 * @return byte[]
-	 * @throws IOException if anything goes wrong
-	 */
-	public byte[] getContents() throws IOException {
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		save(out);
-		return out.toByteArray();
-	}
-
-	/**
-	 * Returns an input stream for writing to the disk with a local locale.
-	 *
-	 * @return java.io.InputStream
-	 * @throws IOException if anything goes wrong
-	 */
-	public InputStream getInputStream() throws IOException {
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		save(out);
-		return new ByteArrayInputStream(out.toByteArray());
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public Float getFloat(String key) {
-		Attr attr = element.getAttributeNode(key);
-		if (attr == null)
-			return null; 
-		String strValue = attr.getValue();
-		try {
-			return new Float(strValue);
-		} catch (NumberFormatException e) {
-			return null;
-		}
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public String getId() {
-		return element.getAttribute(TAG_ID);
-	}
-	
-	/*
-	 * @see IMemento
-	 */
-	public String getName() {
-		return element.getNodeName();
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public Integer getInteger(String key) {
-		Attr attr = element.getAttributeNode(key);
-		if (attr == null)
-			return null; 
-		String strValue = attr.getValue();
-		try {
-			return new Integer(strValue);
-		} catch (NumberFormatException e) {
-			return null;
-		}
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public String getString(String key) {
-		Attr attr = element.getAttributeNode(key);
-		if (attr == null)
-			return null; 
-		return attr.getValue();
-	}
-	
-	public List getNames() {
-		NamedNodeMap map = element.getAttributes();
-		int size = map.getLength();
-		List list = new ArrayList();
-		for (int i = 0; i < size; i++) {
-			Node node = map.item(i);
-			String name = node.getNodeName();
-			list.add(name);
-		}
-		return list;
-	}
-
-	/**
-	 * Loads a memento from the given filename.
-	 *
-	 * @param filename java.lang.String
-	 * @exception java.io.IOException
-	 * @return a memento
-	 */
-	public static IMemento loadMemento(String filename) throws IOException {
-		InputStream in = null;
-		try {
-			in = new BufferedInputStream(new FileInputStream(filename));
-			return XMLMemento.createReadRoot(in);
-		} finally {
-			try {
-				if (in != null)
-					in.close();
-			} catch (Exception e) {
-				// ignore
-			}
-		}
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	private void putElement(Element element2) {
-		NamedNodeMap nodeMap = element2.getAttributes();
-		int size = nodeMap.getLength();
-		for (int i = 0; i < size; i++){
-			Attr attr = (Attr)nodeMap.item(i);
-			putString(attr.getName(),attr.getValue());
-		}
-		
-		NodeList nodes = element2.getChildNodes();
-		size = nodes.getLength();
-		for (int i = 0; i < size; i ++) {
-			Node node = nodes.item(i);
-			if (node instanceof Element) {
-				XMLMemento child = (XMLMemento)createChild(node.getNodeName());
-				child.putElement((Element)node);
-			}
-		}
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public void putFloat(String key, float f) {
-		element.setAttribute(key, String.valueOf(f));
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public void putInteger(String key, int n) {
-		element.setAttribute(key, String.valueOf(n));
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public void putMemento(IMemento memento) {
-		XMLMemento xmlMemento = (XMLMemento) memento;
-		putElement(xmlMemento.element);
-	}
-
-	/*
-	 * @see IMemento
-	 */
-	public void putString(String key, String value) {
-		if (value == null)
-			return;
-		element.setAttribute(key, value);
-	}
-	
-	/**
-	 * Save this Memento to a Writer.
-	 * 
-	 * @param os an output stream
-	 * @throws IOException if anything goes wrong
-	 */
-	public void save(OutputStream os) throws IOException {
-		Result result = new StreamResult(os);
-		Source source = new DOMSource(factory);
-		try {
-			Transformer transformer = TransformerFactory.newInstance().newTransformer();
-			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-			transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
-			transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2");
-			transformer.transform(source, result);
-		} catch (Exception e) {
-			throw (IOException) (new IOException().initCause(e));
-		}
-	}
-
-	/**
-	 * Saves the memento to the given file.
-	 *
-	 * @param filename java.lang.String
-	 * @exception java.io.IOException
-	 */
-	public void saveToFile(String filename) throws IOException {
-		FileOutputStream w = null;
-		try {
-			w = new FileOutputStream(filename);
-			save(w);
-		} catch (IOException e) {
-			throw e;
-		} catch (Exception e) {
-			throw new IOException(e.getLocalizedMessage());
-		} finally {
-			if (w != null) {
-				try {
-					w.close();
-				} catch (Exception e) {
-					// ignore
-				}
-			}
-		}
-	}
-	
-	/*
-	 * @see IMemento#getBoolean(String)
-	 */
-	public Boolean getBoolean(String key) {
-		Attr attr = element.getAttributeNode(key);
-		if (attr == null)
-			return null;
-		String strValue = attr.getValue();
-		if ("true".equalsIgnoreCase(strValue))
-			return new Boolean(true);
-		return new Boolean(false);
-	}
-
-	/*
-	 * @see IMemento#putBoolean(String, boolean)
-	 */
-	public void putBoolean(String key, boolean value) {
-		element.setAttribute(key, value ? "true" : "false");
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.server.http.ui/META-INF/MANIFEST.MF
index f9289b6..cd9c4c3 100644
--- a/plugins/org.eclipse.wst.server.http.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.http.ui/META-INF/MANIFEST.MF
@@ -7,13 +7,11 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.server.http.ui.internal;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)",
+Require-Bundle: org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.server.core;bundle-version="[1.0.204,2.0.0)",
  org.eclipse.wst.server.ui;bundle-version="[1.0.103,1.1.0)",
  org.eclipse.wst.server.http.core;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.debug.ui;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.common.project.facet.ui;bundle-version="[1.2.0,2.0.0)"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.http.ui/icons/obj16/preview.gif b/plugins/org.eclipse.wst.server.http.ui/icons/obj16/preview.gif
deleted file mode 100644
index b51ae39..0000000
--- a/plugins/org.eclipse.wst.server.http.ui/icons/obj16/preview.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.wst.server.http.ui/plugin.xml b/plugins/org.eclipse.wst.server.http.ui/plugin.xml
index fde56f2..b28f4ac 100644
--- a/plugins/org.eclipse.wst.server.http.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.server.http.ui/plugin.xml
@@ -9,14 +9,15 @@
    </extension>
  
    <extension point="org.eclipse.wst.common.project.facet.ui.images">
-    <image runtime-component-type="org.eclipse.wst.server.http.runtime"
+     <image runtime-component-type="org.eclipse.wst.server.http.runtime"
        path="icons/obj16/server.gif"/>
    </extension>
 
    <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
      <adapter>
        <runtime-component id="org.eclipse.wst.server.http.runtime"/>
-       <factory class="org.eclipse.wst.server.http.ui.internal.preview.RuntimeLabelProvider$Factory"/>
+       <!--<factory class="org.eclipse.wst.server.http.ui.internal.RuntimeLabelProvider$Factory"/>-->
+       <factory class="org.eclipse.wst.server.ui.internal.facets.RuntimeLabelProvider$Factory"/>
        <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
      </adapter>
    </extension>
@@ -43,41 +44,4 @@
          typeIds="org.eclipse.wst.server.http.server"
          class="org.eclipse.wst.server.http.ui.internal.HttpSection"/>
    </extension>
-   
-   
-  <extension point="org.eclipse.wst.server.ui.serverImages">
-     <image
-        id="org.eclipse.wst.server.http.ui"
-        typeIds="org.eclipse.wst.server.preview.runtime,org.eclipse.wst.server.preview.server"
-        icon="icons/obj16/preview.gif"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.ui.images">
-    <image runtime-component-type="org.eclipse.wst.server.preview.runtime"
-       path="icons/obj16/preview.gif"/>
-  </extension>
-
-  <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
-    <adapter>
-      <runtime-component id="org.eclipse.wst.server.preview.runtime"/>
-      <factory class="org.eclipse.wst.server.http.ui.internal.preview.RuntimeLabelProvider$Factory"/>
-      <type class="org.eclipse.wst.common.project.facet.ui.IRuntimeComponentLabelProvider"/>
-    </adapter>
-  </extension>
-  
-  <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
-    <launchConfigurationTypeImage
-      id="org.eclipse.wst.server.ui.preview.launchConfigurationTypeImage"
-      configTypeID="org.eclipse.wst.server.core.preview.launchConfigurationType"
-      icon="icons/obj16/preview.gif">
-    </launchConfigurationTypeImage>
-  </extension>
-
-  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
-    <launchConfigurationTabGroup
-      id="org.eclipse.wst.server.ui.preview.launchConfigurationTabGroup"
-      type="org.eclipse.wst.server.core.preview.launchConfigurationType"
-      class="org.eclipse.wst.server.http.ui.internal.preview.PreviewLaunchConfigurationTabGroup">
-    </launchConfigurationTabGroup>
-  </extension>
 </plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java b/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/RuntimeLabelProvider.java
similarity index 96%
rename from plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java
rename to plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/RuntimeLabelProvider.java
index 2f9f815..50af508 100644
--- a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java
+++ b/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/RuntimeLabelProvider.java
@@ -9,7 +9,7 @@
  *    Konstantin Komissarchik - initial API and implementation
  *    IBM Corporation - Support for all server types
  ******************************************************************************/
-package org.eclipse.wst.server.http.ui.internal.preview;
+package org.eclipse.wst.server.http.ui.internal;
 
 import org.eclipse.core.runtime.IAdapterFactory;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
diff --git a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java b/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java
deleted file mode 100644
index 8a8ce3d..0000000
--- a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/PreviewLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.server.http.ui.internal.preview;
-
-import org.eclipse.debug.ui.*;
-
-import org.eclipse.wst.server.ui.ServerLaunchConfigurationTab;
-/**
- * A debug tab group for launching Tomcat. 
- */
-public class PreviewLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup {
-	/*
-	 * @see ILaunchConfigurationTabGroup#createTabs(ILaunchConfigurationDialog, String)
-	 */
-	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[2];
-		tabs[0] = new ServerLaunchConfigurationTab(new String[] { "org.eclipse.wst.server.preview" });
-		tabs[0].setLaunchConfigurationDialog(dialog);
-		/*tabs[1] = new SourceLookupTab();
-		tabs[1].setLaunchConfigurationDialog(dialog);
-		tabs[2] = new EnvironmentTab();
-		tabs[2].setLaunchConfigurationDialog(dialog);*/
-		tabs[1] = new CommonTab();
-		tabs[1].setLaunchConfigurationDialog(dialog);
-		setTabs(tabs);
-	}
-}
\ No newline at end of file
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 dadb567..bdc9643 100644
--- a/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.server.ui/META-INF/MANIFEST.MF
@@ -33,6 +33,7 @@
  org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.server.core;bundle-version="[1.0.103,1.1.0)",
  org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.103,1.1.0)",
- org.eclipse.update.core;resolution:=optional;bundle-version="[3.2.0,4.0.0)"
+ org.eclipse.update.core;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.common.project.facet.ui;resolution:=optional;bundle-version="[1.1.0,2.0.0)"
 Eclipse-LazyStart: true; exceptions="org.eclipse.wst.server.ui.internal.webbrowser"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/facets/RuntimeLabelProvider.java
similarity index 76%
copy from plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java
copy to plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/facets/RuntimeLabelProvider.java
index 2f9f815..715dd7f 100644
--- a/plugins/org.eclipse.wst.server.http.ui/src/org/eclipse/wst/server/http/ui/internal/preview/RuntimeLabelProvider.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/facets/RuntimeLabelProvider.java
@@ -1,15 +1,14 @@
 /******************************************************************************
- * Copyright (c) 2005 BEA Systems, Inc.
+ * Copyright (c) 2007 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
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
- *    Konstantin Komissarchik - initial API and implementation
- *    IBM Corporation - Support for all server types
+ *     IBM Corporation - Initial API and implementation
  ******************************************************************************/
-package org.eclipse.wst.server.http.ui.internal.preview;
+package org.eclipse.wst.server.ui.internal.facets;
 
 import org.eclipse.core.runtime.IAdapterFactory;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;
@@ -20,7 +19,7 @@
 public final class RuntimeLabelProvider implements IRuntimeComponentLabelProvider {
 	private final IRuntimeComponent rc;
 
-	public RuntimeLabelProvider(final IRuntimeComponent rc) {
+	public RuntimeLabelProvider(IRuntimeComponent rc) {
 		this.rc = rc;
 	}
 
@@ -31,7 +30,7 @@
 	public static final class Factory implements IAdapterFactory {
 		private static final Class[] ADAPTER_TYPES = { IRuntimeComponentLabelProvider.class };
 
-		public Object getAdapter(final Object adaptable, final Class adapterType) {
+		public Object getAdapter(Object adaptable, Class adapterType) {
 			final IRuntimeComponent rc = (IRuntimeComponent) adaptable;
 			return new RuntimeLabelProvider(rc);
 		}