diff --git a/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif
new file mode 100644
index 0000000..bc47239
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/config_prop_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/connection.gif b/plugins/org.eclipse.jst.jee.ui/icons/connection.gif
new file mode 100755
index 0000000..e8efe69
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/connection.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif
new file mode 100644
index 0000000..ad3af3c
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/connectorgroup_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif
new file mode 100644
index 0000000..50e8dbd
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/license_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif b/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif
new file mode 100644
index 0000000..959c660
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/icons/resource_adapter_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.properties b/plugins/org.eclipse.jst.jee.ui/plugin.properties
index deb56ba..e27984c 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.properties
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.properties
@@ -24,4 +24,5 @@
 EJB_NAVIGATOR_CONTENT = JEE Navigator Content EJB
 WEB_NAVIGATOR_CONTENT = JEE Navigator Content WEB
 EAR_NAVIGATOR_CONTENT = JEE Navigator Content EAR
-APP_CLIENT_NAVIGATOR_CONTENT = JEE Navigator Content Application Client
\ No newline at end of file
+APP_CLIENT_NAVIGATOR_CONTENT = JEE Navigator Content Application Client
+CONNECTOR_NAVIGATOR_CONTENT = JEE Navigator Content Connector
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.xml b/plugins/org.eclipse.jst.jee.ui/plugin.xml
index c3c6e9c..5e99726 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.xml
@@ -477,7 +477,7 @@
                  <test
                        forcePluginActivation="true"
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
-                       value="jst.appclient:5.0">
+                       value="jst.ejb:3.1">
                  </test>
               </or>
            </adapt>
@@ -706,6 +706,11 @@
                        forcePluginActivation="true"
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
                        value="jst.web:2.5"/>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.web:3.0">
+                 </test>
               </or>
            </adapt>
    <instanceof
@@ -879,21 +884,25 @@
      <triggerPoints>
         <or>
            <instanceof
-                 value="org.eclipse.core.resources.IProject">
-           </instanceof>
-           <instanceof
-                 value="org.eclipse.jst.jee.ui.internal.navigator.ear.BundledNode">
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ear..BundledNode">
            </instanceof>
             <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider">
            </instanceof>
            <adapt
                  type="org.eclipse.core.resources.IProject">
+                 <or>
               <test
                     forcePluginActivation="true"
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.ear:5.0">
               </test>
+                <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.ear:6.0">
+              </test>
+              </or>
            </adapt>
            <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.ear.ModulesNode">
@@ -1147,7 +1156,7 @@
         id="org.eclipse.jst.jee.ui.appclient"
         labelProvider="org.eclipse.jst.jee.ui.internal.navigator.AppClient5LabelProvider"
         name="%APP_CLIENT_NAVIGATOR_CONTENT"
-        priority="highest">
+          priority="highest">
      <triggerPoints>
         <or>
            <instanceof
@@ -1155,11 +1164,18 @@
            </instanceof>
            <adapt
                  type="org.eclipse.core.resources.IProject">
+                 <or>
               <test
                     forcePluginActivation="true"
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.appclient:5.0">
               </test>
+              <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.appclient:6.0">
+              </test>
+              </or>
            </adapt>
            <instanceof
                  value="org.eclipse.jst.javaee.core.JavaEEObject">
@@ -1184,6 +1200,43 @@
         </or>
      </possibleChildren>
   </navigatorContent>
+  <navigatorContent
+        activeByDefault="true"
+        contentProvider="org.eclipse.jst.jee.ui.internal.navigator.ConnectorContentProvider"
+        icon="icons/connectorgroup_obj.gif"
+        id="org.eclipse.jst.jee.ui.ra"
+        labelProvider="org.eclipse.jst.jee.ui.internal.navigator.ConnectorLabelProvider"
+        name="%CONNECTOR_NAVIGATOR_CONTENT"
+        priority="highest">
+     <possibleChildren>
+        <or>
+           <instanceof
+                 value="org.eclipse.jst.javaee.core.JavaEEObject">
+           </instanceof>
+           <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ra.AbstractConnectorGroupProvider">
+           </instanceof>
+        </or>
+     </possibleChildren>
+     <triggerPoints>
+        <or>
+           <adapt
+                 type="org.eclipse.core.resources.IProject">
+              <or>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.connector:1.6">
+                 </test>
+              </or>
+           </adapt>
+           <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ra.AbstractConnectorGroupProvider">
+           </instanceof>
+        </or>
+     </triggerPoints>
+  
+  </navigatorContent>
 	</extension>
    <extension
          point="org.eclipse.core.runtime.adapters">
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
index af32aa9..aa593a4 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/Messages.java
@@ -16,6 +16,7 @@
 public class Messages extends NLS {
 
 	private static final String BUNDLE_NAME = "org.eclipse.jst.jee.ui.internal.messages"; //$NON-NLS-1$
+	
 
 	private Messages() {
 		// Do not instantiate
@@ -27,6 +28,9 @@
 	public static String SESSION_BEANS;
 	public static String ENTITY_BEANS;
 	public static String MESSAGE_DRIVEN_BEANS;
+	public static String MessageAdapterNode_MESSAGE_ADAPTER;
+	public static String MessageListenerNode_MessageListener;
+	public static String ActicationSpecNode_ActivationSpec;
 	public static String ACTIVATION_CONFIG_PROPERTIES;
 	public static String ENTERPRISE_BEAN_CLASS_DESCRIPTION;
 	
@@ -58,6 +62,15 @@
 	public static String AddModuleToEarDropAssistant_Adding_module_to_ea_;
 	public static String ImportJEEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts;
 	public static String ImportJEEModuleDropAssistant_Could_not_recognize_extension_0_;
+	public static String InboundRaNode_Inbound_Resource_adapter;
+	
+	public static String ConnectorLabelProvider_ADMIN_OBJECT;
+	public static String ConnectorLabelProvider_CONFIG_PROPERTY;
+	public static String ConnectorLabelProvider_ConnectionDefinition;
+	public static String ConnectorLabelProvider_LICENSE_ARTIFACT;
+	public static String ConnectorLabelProvider_RequiredConfigProperty;
+	public static String GroupRaContentProvider_RESOURCE_ADAPTER;
+	public static String OutboundRaNode_OutboundResourceAdapter;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
index e12bba3..e3eb10a 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/messages.properties
@@ -4,6 +4,9 @@
 SESSION_BEANS=Session Beans
 ENTITY_BEANS=Entity Beans (1.x-2.x)
 MESSAGE_DRIVEN_BEANS=Message-Driven Beans
+MessageAdapterNode_MESSAGE_ADAPTER=MessageAdapter
+MessageListenerNode_MessageListener=MessageListener 
+ActicationSpecNode_ActivationSpec=ActivationSpec  
 ACTIVATION_CONFIG_PROPERTIES=Activation Config Properties
 ENTERPRISE_BEAN_CLASS_DESCRIPTION=Enterprise Bean Class - 
 
@@ -32,3 +35,12 @@
 AddModuleToEarDropAssistant_Adding_module_to_ea_=Adding module to ear
 ImportJEEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts=Importing Java Enterprise Edition artifacts
 ImportJEEModuleDropAssistant_Could_not_recognize_extension_0_=Could not recognize extension
+InboundRaNode_Inbound_Resource_adapter=InboundResourceAdapter
+
+ConnectorLabelProvider_ADMIN_OBJECT=AdminObject 
+ConnectorLabelProvider_CONFIG_PROPERTY=ConfigProperty 
+ConnectorLabelProvider_ConnectionDefinition=ConnectionDefinition 
+ConnectorLabelProvider_LICENSE_ARTIFACT=License
+ConnectorLabelProvider_RequiredConfigProperty=RequiredConfigProperty 
+GroupRaContentProvider_RESOURCE_ADAPTER=Resource Adapter
+OutboundRaNode_OutboundResourceAdapter=OutboundResourceAdapter
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java
new file mode 100644
index 0000000..1541c52
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorContentProvider.java
@@ -0,0 +1,47 @@
+package org.eclipse.jst.jee.ui.internal.navigator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.javaee.jca.Connector;
+import org.eclipse.jst.jee.ui.internal.navigator.ra.RaGroupContentProvider;
+
+public class ConnectorContentProvider extends JEE5ContentProvider {
+
+	public Object[] getChildren(Object aParentElement) {
+		List<Object> children = new ArrayList<Object>();
+		IProject project = null;
+		if (IProject.class.isInstance(aParentElement)) {
+			project = (IProject) aParentElement;
+				AbstractGroupProvider cachedContentProvider = getCachedContentProvider(project);
+				if (cachedContentProvider.isValid()){
+					children.add(cachedContentProvider);
+				}
+		} else if (AbstractGroupProvider.class.isInstance(aParentElement)){
+			AbstractGroupProvider abstractGroupProvider = (AbstractGroupProvider) aParentElement;
+			if (abstractGroupProvider.hasChildren()){
+				children.addAll(abstractGroupProvider.getChildren());
+			}
+		}
+		return children.toArray();
+	}
+
+	public Object getParent(Object element) {
+		return null;
+	}
+
+	public boolean hasChildren(Object element) {
+		return true;
+	}
+
+	public Object[] getElements(Object inputElement) {
+		return getChildren(inputElement);
+	}
+
+	@Override
+	protected AbstractGroupProvider getNewContentProviderInstance(IProject project) {
+		return new RaGroupContentProvider((Connector)getCachedModelProvider(project).getModelObject(), project);
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java
new file mode 100644
index 0000000..0397c66
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ConnectorLabelProvider.java
@@ -0,0 +1,54 @@
+package org.eclipse.jst.jee.ui.internal.navigator;
+
+import org.eclipse.jst.j2ee.navigator.internal.J2EELabelProvider;
+import org.eclipse.jst.javaee.jca.ConfigProperty;
+import org.eclipse.jst.javaee.jca.ConnectionDefinition;
+import org.eclipse.jst.javaee.jca.RequiredConfigProperty;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
+import org.eclipse.swt.graphics.Image;
+
+public class ConnectorLabelProvider extends J2EELabelProvider {
+
+	private Image CONFIG_PROP_IMAGE;
+	private Image LICENSE_IMAGE;
+
+	@Override
+	public String getText(Object element) {
+		if (AbstractGroupProvider.class.isInstance(element)){
+			return ((AbstractGroupProvider) element).getText();
+		} else if (element instanceof org.eclipse.jst.javaee.jca.License){
+			return Messages.ConnectorLabelProvider_LICENSE_ARTIFACT;
+		}  else if (element instanceof ConfigProperty){
+			return Messages.ConnectorLabelProvider_CONFIG_PROPERTY + ((ConfigProperty)element).getConfigPropertyName() != null ? ((ConfigProperty)element).getConfigPropertyName() : ""; //$NON-NLS-1$
+		}  else if (element instanceof RequiredConfigProperty){
+			return Messages.ConnectorLabelProvider_RequiredConfigProperty + ((RequiredConfigProperty)element).getConfigPropertyName() != null ? ((RequiredConfigProperty)element).getConfigPropertyName() : ""; //$NON-NLS-1$
+		}  else if (element instanceof ConnectionDefinition){
+			return Messages.ConnectorLabelProvider_ConnectionDefinition + ((ConnectionDefinition)element).getManagedconnectionfactoryClass() != null ?((ConnectionDefinition)element).getManagedconnectionfactoryClass() : ""; //$NON-NLS-1$
+		}
+		
+		return super.getText(element);
+	}
+
+	@Override
+	public Image getImage(Object element) {
+		if (AbstractGroupProvider.class.isInstance(element)){
+			return ((AbstractGroupProvider) element).getImage();
+		}  else if (element instanceof ConfigProperty){
+			if (CONFIG_PROP_IMAGE == null) {
+				CONFIG_PROP_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_CONFIG_PROP);
+			}
+			return CONFIG_PROP_IMAGE;		
+		} else if (element instanceof org.eclipse.jst.javaee.jca.License){
+			if (LICENSE_IMAGE == null) {
+				LICENSE_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_LICENSE);
+			}
+			return LICENSE_IMAGE;		
+		}
+		return super.getImage(element);
+	}
+
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
index bd5a95a..500b03a 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
@@ -111,9 +111,11 @@
 				try {
 					facetedProject = ProjectFacetsManager.create(project);
 					if (facetedProject != null && 
-							facetedProject.hasProjectFacet(
+							(facetedProject.hasProjectFacet(
 									ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
-											J2EEVersionConstants.VERSION_5_0_TEXT))) {
+											J2EEVersionConstants.VERSION_5_0_TEXT)) || facetedProject.hasProjectFacet(
+													ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
+															J2EEVersionConstants.VERSION_6_0_TEXT)))) {
 						GroupEARProvider element = (GroupEARProvider) getCachedContentProvider(project);
 						children.add(element);
 					}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
index bd895fc..cad1169 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
@@ -76,9 +76,11 @@
 			IFacetedProject facetedProject = ProjectFacetsManager.create(project);
 			//EE6TODO
 			if (facetedProject != null && 
-					facetedProject.hasProjectFacet(
+					(facetedProject.hasProjectFacet(
 							ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
-									J2EEVersionConstants.VERSION_5_0_TEXT))) {
+									J2EEVersionConstants.VERSION_5_0_TEXT)) || facetedProject.hasProjectFacet(
+											ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
+													J2EEVersionConstants.VERSION_6_0_TEXT)))) {
 
 				if(bundledLibsNode == null){
 					BundledNode bundledLibsDirectoryNode = new BundledNode(project, Messages.LIBRARY_DIRECTORY + ": /" + EAR_DEFAULT_LIB, null);//$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java
new file mode 100644
index 0000000..f2e1add
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AbstractConnectorGroupProvider.java
@@ -0,0 +1,12 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
+
+public abstract class AbstractConnectorGroupProvider extends AbstractGroupProvider {
+
+	public AbstractConnectorGroupProvider(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java
new file mode 100644
index 0000000..b8b6c87
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/ActicationSpecNode.java
@@ -0,0 +1,39 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.ActivationSpec;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class ActicationSpecNode extends AbstractConnectorGroupProvider {
+
+	public ActicationSpecNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+	@Override
+	public String getText() {
+		return Messages.ActicationSpecNode_ActivationSpec + (((ActivationSpec)javaee).getActivationspecClass() != null ? ((ActivationSpec)javaee).getActivationspecClass() :"");  //$NON-NLS-1$
+	}
+
+	@Override
+	public boolean hasChildren() {
+		return ((ActivationSpec)javaee).getRequiredConfigProperty() != null && ((ActivationSpec)javaee).getRequiredConfigProperty().size() > 0;
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		children.addAll(((ActivationSpec)javaee).getRequiredConfigProperty());
+		return children;
+	}
+
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java
new file mode 100644
index 0000000..24d6e29
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/AdminObjectNode.java
@@ -0,0 +1,43 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.AdminObject;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class AdminObjectNode extends AbstractConnectorGroupProvider {
+
+	public AdminObjectNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+//		children.addAll(((AdminObject)javaee).getConfigProperty());
+		return children;
+	}
+	
+	
+
+	@Override
+	public boolean hasChildren() {
+		return false;
+	}
+
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.ConnectorLabelProvider_ADMIN_OBJECT + (((AdminObject)javaee).getAdminobjectInterface() != null ? ((AdminObject)javaee).getAdminobjectInterface() :""); //$NON-NLS-1$
+	}
+	
+	
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java
new file mode 100644
index 0000000..b5ee3aa
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/GroupRaContentProvider.java
@@ -0,0 +1,66 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.Connector;
+import org.eclipse.jst.javaee.jca.ResourceAdapter;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
+import org.eclipse.swt.graphics.Image;
+
+public class GroupRaContentProvider extends AbstractConnectorGroupProvider {
+
+
+	private Image RA_IMAGE;
+
+	public GroupRaContentProvider(JavaEEObject javaee1) {
+		super(javaee1);
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		Connector connector = (Connector) javaee;
+		ResourceAdapter ra = connector.getResourceadapter();
+		if (ra == null){
+			return children;
+		}
+		if (ra.getAdminobject() != null){
+			for (Object object : ra.getAdminobject() ) {
+				children.add(new AdminObjectNode((JavaEEObject) object));				
+			}
+		}
+		if (ra.getConfigProperty() != null){
+			children.addAll(ra.getConfigProperty());
+		}
+		
+		if (ra.getSecurityPermission() != null){
+			children.addAll(ra.getSecurityPermission());
+		}
+		if (ra.getInboundResourceadapter() != null){
+			children.add(new InboundRaNode(ra.getInboundResourceadapter()));
+		}
+		if (ra.getOutboundResourceadapter()!= null){
+			children.add(new OutboundRaNode(ra.getOutboundResourceadapter()));
+			
+		}
+		return children;
+	}
+
+	@Override
+	public Image getImage() {
+		if (RA_IMAGE == null) {
+			RA_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_RESOURCE_ADAPTER);
+		}
+		return RA_IMAGE;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.GroupRaContentProvider_RESOURCE_ADAPTER;
+	}
+	
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java
new file mode 100644
index 0000000..7007967
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/InboundRaNode.java
@@ -0,0 +1,41 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.InboundResourceAdapter;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class InboundRaNode extends AbstractConnectorGroupProvider {
+
+	public InboundRaNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		children.add(new MessageAdapterNode(((InboundResourceAdapter)javaee).getMessageadapter()));
+		return children;
+	}
+
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.InboundRaNode_Inbound_Resource_adapter;
+	}
+
+	@Override
+	public boolean hasChildren() {
+		return ((InboundResourceAdapter)javaee).getMessageadapter() != null;
+	}
+	
+	
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java
new file mode 100644
index 0000000..9398db4
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageAdapterNode.java
@@ -0,0 +1,46 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.MessageAdapter;
+import org.eclipse.jst.javaee.jca.MessageListener;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class MessageAdapterNode extends AbstractConnectorGroupProvider {
+
+	public MessageAdapterNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		List<MessageListener> messagelistener = ((MessageAdapter)javaee).getMessagelistener();
+		for (MessageListener messageListener2 : messagelistener) {
+			children.add(new MessageListenerNode(messageListener2));	
+		}
+		return children;
+	}
+
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.MessageAdapterNode_MESSAGE_ADAPTER;
+	}
+
+	@Override
+	public boolean hasChildren() {
+		List<MessageListener> messagelistener = ((MessageAdapter)javaee).getMessagelistener();
+		return messagelistener != null && messagelistener.size()>0;
+	}
+	
+	
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java
new file mode 100644
index 0000000..dc6b2ec
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/MessageListenerNode.java
@@ -0,0 +1,43 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.MessageListener;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class MessageListenerNode extends AbstractConnectorGroupProvider {
+
+	public MessageListenerNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		children.add(new ActicationSpecNode(((MessageListener)javaee).getActivationspec()));
+		return children;
+	}
+	
+	
+
+	@Override
+	public boolean hasChildren() {
+		return ((MessageListener)javaee).getActivationspec() != null;
+	}
+
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.MessageListenerNode_MessageListener + (((MessageListener)javaee).getMessagelistenerType() != null ? ((MessageListener)javaee).getMessagelistenerType() :"");  //$NON-NLS-1$
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java
new file mode 100644
index 0000000..e65d4db
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/OutboundRaNode.java
@@ -0,0 +1,40 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.OutboundResourceAdapter;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.swt.graphics.Image;
+
+public class OutboundRaNode extends AbstractConnectorGroupProvider {
+
+	public OutboundRaNode(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		children.addAll(((OutboundResourceAdapter)javaee).getConnectionDefinition());
+		return children;
+	}
+	@Override
+	public Image getImage() {
+		return null;
+	}
+
+	@Override
+	public boolean hasChildren() {
+		return ((OutboundResourceAdapter)javaee).getConnectionDefinition() != null && ((OutboundResourceAdapter)javaee).getConnectionDefinition().size() >0;
+	}
+
+	@Override
+	public String getText() {
+		return Messages.OutboundRaNode_OutboundResourceAdapter;
+	}
+
+	
+	
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
new file mode 100644
index 0000000..56172ad
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
@@ -0,0 +1,49 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ra;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.javaee.jca.Connector;
+import org.eclipse.jst.jee.ui.internal.Messages;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
+import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.graphics.Image;
+
+public class RaGroupContentProvider extends AbstractConnectorGroupProvider {
+
+	private IProject project;
+	private Image CONNECTOR_IMAGE;
+
+	public RaGroupContentProvider(JavaEEObject javaee, IProject project) {
+		super(javaee);
+		this.project = project;
+	}
+
+	@Override
+	public List getChildren() {
+		List children = new ArrayList();
+		children.add(new GroupRaContentProvider(javaee));
+		if(((Connector)javaee).getLicense() != null){
+			children.add(((Connector)javaee).getLicense());
+		}
+		return children;
+	}
+
+	@Override
+	public Image getImage() {
+		if (CONNECTOR_IMAGE == null) {
+			CONNECTOR_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_CONNECTOR);
+		}
+		return CONNECTOR_IMAGE;
+	}
+	
+	
+	@Override
+	public String getText() {
+		return NLS.bind(Messages.DEPLOYMENT_DESCRIPTOR, project.getName());
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
index ff3f571..91d30e2 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPlugin.java
@@ -12,15 +12,15 @@
 
 import java.net.URL;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
-import org.eclipse.core.runtime.Platform;
-import java.lang.Throwable;
-import org.eclipse.core.runtime.CoreException;
 
 /**
  * The activator class controls the plug-in life cycle
@@ -145,4 +145,8 @@
 	public static void logError(CoreException exception) {
 		Platform.getLog(Platform.getBundle(PLUGIN_ID)).log( exception.getStatus() );
 	}
+	
+	public Image getImage(String key){
+		return getImageDescriptor(key).createImage();
+	}
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
index 6b9e958..3789a2b 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
@@ -11,10 +11,16 @@
 package org.eclipse.jst.jee.ui.plugin;
 
 
+
 public class JEEUIPluginIcons {
 
 	public static String IMG_EJBEEMODEL = "30_ejbjar_obj"; //$NON-NLS-1$
 	public static String IMG_WEBEEMODEL = "webapp_25"; //$NON-NLS-1$
+	public static String IMG_CONNECTOR = "connection"; //$NON-NLS-1$
+	public static String IMG_CONFIG_PROP = "config_prop_obj"; //$NON-NLS-1$
+	public static String IMG_LICENSE = "license_obj"; //$NON-NLS-1$
+	public static String IMG_RESOURCE_ADAPTER = "resource_adapter_obj"; //$NON-NLS-1$
+	
 	public static String SERVLET_MAPPING = "webuiIcons/servlet_mapping"; //$NON-NLS-1$
 	public static String FILTER_MAPPING = "webuiIcons/filter"; //$NON-NLS-1$
 	public static String GROUP_FILTER_MAPPING = "webuiIcons/filter_mapping"; //$NON-NLS-1$
