[298475] ClassCastException occurs when try to open a session bean from the DD tree
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java
index f1d0274..4761f96 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java
@@ -27,6 +27,7 @@
 import org.eclipse.jdt.ui.JavaUI;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jst.j2ee.commonarchivecore.internal.ModuleFile;
 import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveOptions;
@@ -109,21 +110,32 @@
 
 	protected void openAppropriateEditor(String c) {
 		if(getStructuredSelection() instanceof TreeSelection){
-			IProject project = (IProject) (((TreeSelection)getStructuredSelection()).getPaths()[0]).getSegment(0);
-			IType findType;
-			try {
-				findType = JavaCore.create(project).findType(c);
-				if(findType == null){
-					return;
+			TreePath path = ((TreeSelection) getStructuredSelection()).getPaths()[0];
+			IProject project = null;
+			
+			while (path != null) {
+				Object segment = path.getLastSegment();
+				if (segment instanceof IProject) {
+					project = (IProject) segment;
+					break;
 				}
-				openAppropriateEditor(findType.getResource());
-			} catch (JavaModelException e) {
-				JEEUIPlugin.logError("Error during open editor", e); //$NON-NLS-1$
+				path = path.getParentPath();
 			}
 
+			if (project != null) {
+				try {
+					IType findType = JavaCore.create(project).findType(c);
+					if(findType == null){
+						return;
+					}
+					openAppropriateEditor(findType.getResource());
+				} catch (JavaModelException e) {
+					JEEUIPlugin.logError("Error during open editor", e); //$NON-NLS-1$
+				}
+			}
 		}
-
 	}
+	
 	protected void openAppropriateEditor(IVirtualComponent c) {
 		if (c == null) {
 			return;
@@ -231,6 +243,8 @@
 			}
 			
 			IResource resource = WorkbenchResourceHelper.getFile((EObject)srcObject);
+			if (resource == null)
+				return;
 			IProject project = resource.getProject();			
 			IJavaProject javaProject = JavaCore.create(project);
 			if(javaProject.exists()){