diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
index 1487a1b..3a891ed 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
@@ -52,7 +52,7 @@
     
     private IProject project;
     private String serverComponentName;
-    private String className;
+    private String className = "";
     
     @Override
     public void setInitialSelection(IStructuredSelection initialSelection) {
@@ -108,11 +108,7 @@
 
     @Override
     public IStructuredSelection getObjectSelection() {
-        if (className != null) {
-            IStructuredSelection objectSelection = new StructuredSelection(className);
-            return objectSelection;
-        }
-        return super.getObjectSelection();
+        return new StructuredSelection(className);
     }
 
     public String getComponentName() {
@@ -152,7 +148,8 @@
         IProject project = getProject();
         if (project != null) {
             validationStatus = JDTUtils.validateJavaTypeName(project.getName(), className);
-            return validationStatus.isOK();
+        } else {
+            validationStatus = JDTUtils.validateJavaTypeName(className);
         }
 
 //        IProject project = getProject();
@@ -165,7 +162,7 @@
 //            }
 //            return validationStatus.isOK();
 //        }
-        return false;
+        return validationStatus.isOK();
     }
     
     private static class JavaViewerFilter extends ViewerFilter {
diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
index ed0458f..aedda27 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
@@ -49,7 +49,7 @@
                 return structuredSelection;
             }
         }
-        return StructuredSelection.EMPTY;
+        return value;
     }
 
     private String getFullyQualifiedJavaName(IFile resource) {
diff --git a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
index 3e748bc..6430265 100644
--- a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
+++ b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
@@ -168,8 +168,8 @@
 
         List listeners = webapp.getListeners();
         for (int i = 0; i < listeners.size(); i++) {
-            org.eclipse.jst.javaee.core.Listener contextLoaderListener = (org.eclipse.jst.javaee.core.Listener) listeners
-                    .get(i);
+            org.eclipse.jst.javaee.core.Listener contextLoaderListener = 
+                (org.eclipse.jst.javaee.core.Listener) listeners.get(i);
             if (contextLoaderListener.getListenerClass().equals(
                     "org.springframework.web.context.ContextLoaderListener")) { //$NON-NLS-1$
                 return;
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
index ac7be37..86de839 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
@@ -22,6 +22,8 @@
         "org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCoreMessages"; //$NON-NLS-1$
     public static String WSDL2JAVA_PROJECT_SELECTION_ERROR;
     public static String WSDL2JAVA_VALID_PORTTYPE_MESSAGE;
+    
+    public static String JAVA2WS_SERVICE_IMPL_NOT_FOUND;
 
     static {
         // initialize resource bundle
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
index b025aac..30d8712 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
@@ -11,3 +11,5 @@
 
 WSDL2JAVA_PROJECT_SELECTION_ERROR=Project configuration Error. Please select the "Service project:{0}" link in the "Configuration:" section and change the Service Project setting from {0} to {1}.
 WSDL2JAVA_VALID_PORTTYPE_MESSAGE=The WSDL document must have a valid portType element
+
+JAVA2WS_SERVICE_IMPL_NOT_FOUND=The Service implementation "{0}" cannot be loaded from the "{1}" project. Please check that the project contains the class and that it is visible on the projects "Java Build Path".
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java
new file mode 100644
index 0000000..b65308d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Shane Clarke.
+ * 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:
+ *    Shane Clarke - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.cxf.creation.core.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jst.ws.internal.cxf.core.model.Java2WSDataModel;
+import org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCoreMessages;
+import org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCorePlugin;
+import org.eclipse.jst.ws.jaxws.core.utils.JDTUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+/**
+ * 
+ * @author sclarke
+ *
+ */
+public class Java2WSValidateInputCommand extends AbstractDataModelOperation {
+    
+    private Java2WSDataModel model;
+
+    public Java2WSValidateInputCommand(Java2WSDataModel model) {
+        this.model = model;
+    }
+
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        IStatus status = Status.OK_STATUS;
+        IJavaProject javaProject = JDTUtils.getJavaProject(model.getProjectName());
+        if (javaProject != null) {
+            IType type = JDTUtils.getType(javaProject, model.getJavaStartingPoint());
+            if (type == null || !type.exists()) {
+                status = new Status(IStatus.ERROR, CXFCreationCorePlugin.PLUGIN_ID, 
+                        CXFCreationCoreMessages.bind(CXFCreationCoreMessages.JAVA2WS_SERVICE_IMPL_NOT_FOUND,
+                                new Object[] {model.getJavaStartingPoint(), model.getProjectName()}));
+            }
+        }
+        return status;
+    }
+}
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
index c217069..29f797f 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
@@ -41,6 +41,10 @@
     private IType startingPointType;
 
     public INamedWidgetContributor getFirstNamedWidget() {
+        if (startingPointType == null) {
+            return null;
+        }
+        
         if (interfaceWidgetContributor == null || classWidgetContributor == null) {
             init();
         }
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
index 4e7f9cd..ce1be70 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
@@ -21,6 +21,7 @@
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSDefaultingCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSSelectSEICommand;
+import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSValidateInputCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaDefaultingCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaProjectSelectionCommand;
@@ -70,6 +71,7 @@
             Java2WSDataModel java2WSDataModel = CXFFactory.eINSTANCE.createJava2WSDataModel();
             java2WSDataModel.setProjectName(projectName);
             java2WSDataModel.setJavaStartingPoint(this.getWebServiceInfo().getImplURL());
+            commands.add(new Java2WSValidateInputCommand(java2WSDataModel));
             commands.add(new Java2WSDefaultingCommand(java2WSDataModel));
             commands.add(new Java2WSSelectSEICommand(java2WSDataModel));
             commands.add(new JAXWSAnnotateJavaCommand(java2WSDataModel));
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
index 8f68d44..f41de49 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
@@ -66,20 +66,20 @@
 JAXWS_GENERATE_RESPONSE_WRAPPER=@&ResponseWrapper
 JAXWS_ANNOTATIONS_PROCESSING_GROUP_LABEL=JAX-WS Annotation Processing
 JAXWS_ENABLE_ANNOTATION_PROCESSING=&Enable annotation validation processing
-JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP=Turn JAX-WS annotation processing on or off in projects configured for {0} web services. 
+JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP=Turn JAX-WS annotation processing on or off in projects configured for {0} web services
     
 JAVA2WS_SOAP12_BINDING_TOOLTIP=Specify to generate SOAP 1.2 binding
-JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP= Output schemas to separate files and use imports to load them instead of inlining them into the wsdl.
-JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding. Default is jaxb for jaxws frontend.
-#JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding (aegis or jaxb). Default is jaxb for jaxws frontend, and aegis for simple frontend.
-JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use.
-#JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use. jaxws and the simple frontend are supported.
+JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP= Output schemas to separate files and use imports to load them instead of inlining them into the wsdl
+JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding. Default is jaxb for jaxws frontend
+#JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding (aegis or jaxb). Default is jaxb for jaxws frontend, and aegis for simple frontend
+JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use
+#JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use. jaxws and the simple frontend are supported
 JAVA2WS_GENERATE_WSDL_TOOLTIP=Specify to generate the WSDL file
 JAVA2WS_GENERATE_WRAPPERBEAN_TOOLTIP=Specify to generate the wrapper and fault bean
 JAVA2WS_GENERATE_CLIENT_TOOLTIP=Generate a client mainline using JAX-WS APIs\n.....\n javax.xml.ws.Service service = javax.xml.ws.Service.create(...);\n... client = service.getPort(...);\n
 JAVA2WS_GENERATE_SERVER_TOOLTIP=Generate a server mainline using JAX-WS APIs\n.....\n javax.xml.ws.Endpoint.publish(...);\n.....\n
 JAVA2WS_GENERATE_ANT_TOOLTIP=Specify to generate an Ant build.xml file
-JAVA2WS_BEANS_TOOLTIP=Specify the pathname of a file defining additional Spring beans to customise data binding configuration.
+JAVA2WS_BEANS_TOOLTIP=Specify the pathname of a file defining additional Spring beans to customise data binding configuration
 JAVA2WS_TARGET_NAMESPACE_TOOLTIP=Specify the target namespace to use in the wsdl
 JAVA2WS_SERVICE_NAME_TOOLTIP=Specify the service name to use in the generated wsdl
 JAVA2WS_PORT_NAME_TOOLTIP=Specify the port name to use in the generated wsdl
@@ -103,7 +103,7 @@
 JAVA2WS_SELECT_IMPLEMENTATION_TOOLTIP=Select the Implementation
 
 WSDL2JAVA_FRONTEND_TOOLTIP=Specify the frontend. Default is JAXWS. Currently supports only JAXWS frontend
-WSDL2JAVA_DATABINDING_TOOLTIP=Specify the databinding. Default is JAXB. Currently supports only JAXB databinding. 
+WSDL2JAVA_DATABINDING_TOOLTIP=Specify the databinding. Default is JAXB. Currently supports only JAXB databinding
 WSDL2JAVA_WSDL_VERSION_TOOLTIP=Specify the wsdl version .Default is WSDL1.1. Currently suppports only WSDL1.1 version
 WSDL2JAVA_GENERATE_IMPLEMENTATION_TOOLTIP=Generate starting point code for an implementation object
 WSDL2JAVA_GENERATE_CLIENT_TOOLTIP=Generate the client code
@@ -114,11 +114,11 @@
 WSDL2JAVA_DEFAULT_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default namespace package name mapping
 WSDL2JAVA_EXCLUDE_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default excludes namespace mapping
 WSDL2JAVA_WSDL_LOCATION_TOOLTIP=Specifies the value of the @WebService annotation's wsdlLocation property
-WSDL2JAVA_XML_CATALOG_TOOLTIP=Specify the URL of an XML catalog to use for resolving imported schemas and WSDL documents.
+WSDL2JAVA_XML_CATALOG_TOOLTIP=Specify the URL of an XML catalog to use for resolving imported schemas and WSDL documents
 WSDL2JAVA_NO_ADDRESS_BINDING=Use the {0} proprietary WS-&Addressing type
-WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP=Use the {0} proprietary WS-Addressing type instead of the JAX-WS 2.1 compliant mapping.
+WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP=Use the {0} proprietary WS-Addressing type instead of the JAX-WS 2.1 compliant mapping
 WSDL2JAVA_AUTO_NAME_RESOLUTION=Enable Auto Name Resolution
-WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP=Automatically resolve naming conflicts without requiring the use of binding customizations.
+WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP=Automatically resolve naming conflicts without requiring the use of binding customizations
 WSDL2JAVA_XJC_ARGS_TOOLTIP=Specify the arguments to be passed to directly to the XJC
 WSDL2JAVA_XJC_ARG_GROUP_TITLE=XJC Arguments
 WSDL2JAVA_XJC_ARG_COLUMN_NAME=XJC Arg
@@ -141,7 +141,7 @@
 WSDL2JAVA_OUTPUT_DIRECTORY_TOOLTIP=Specify the directory into which the generated code files are written
 
 WSDL2JAVA_PACKAGE_NAME=&Package Name:
-WSDL2JAVA_PACKAGE_NAME_TOOLTIP=The java package name to use for the generated code. 
+WSDL2JAVA_PACKAGE_NAME_TOOLTIP=The java package name to use for the generated code
 
 WSDL2JAVA_PACKAGE_NAME_OPTIONAL=Specify &WSDL Namepsace to Package Name Mappings
 WSDL2JAVA_PACKAGE_NAME_OPTIONAL_TOOLTIP=Optionally specify the wsdl namespace mapping to a particular java package name
@@ -153,7 +153,7 @@
 WSDL2JAVA_SERVICE_NAME_TOOLTIP=Specify the name of the WSDL service for which code is to be generated. The default is to generate code for every service in the WSDL document
 
 WSDL2JAVA_BINDING_FILES=&Binding Files:
-WSDL2JAVA_BINDING_NAME_TOOLTIP=Specify zero, or more, JAXWS or JAXB binding files.
+WSDL2JAVA_BINDING_NAME_TOOLTIP=Specify zero, or more, JAXWS or JAXB binding files
 WSDL2JAVA_BINDING_FILES_ADD=&Add...
 WSDL2JAVA_BINDING_FILES_REMOVE=&Remove...
 
