Author: genspring
Date: Wed Jun 15 07:09:46 2011
New Revision: 1135942

URL: http://svn.apache.org/viewvc?rev=1135942&view=rev
Log:
OPENEJB-1596 To add global jndi name to remote jndi system.

see GERONIMO-6008 to see how geronimo uses it.

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
    
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
 Wed Jun 15 07:09:46 2011
@@ -352,7 +352,7 @@ public class JndiBuilder {
 
                 String name = strategy.getName(beanClass, 
JndiNameStrategy.Interface.LOCALBEAN);
                 bind("openejb/local/" + name, ref, bindings, beanInfo, 
beanClass);
-                bindJava(bean, beanClass.getName(), ref);
+                bindJava(bean, beanClass, ref, bindings, beanInfo);
 
                 simpleNameRef = ref;
             }
@@ -377,7 +377,7 @@ public class JndiBuilder {
 
                 String externalName = "openejb/local/" + 
strategy.getName(interfce, JndiNameStrategy.Interface.BUSINESS_LOCAL);
                 bind(externalName, ref, bindings, beanInfo, interfce);
-                bindJava(bean, interfce.getName(), ref);
+                bindJava(bean, interfce, ref, bindings, beanInfo);
                 
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
@@ -404,7 +404,7 @@ public class JndiBuilder {
                 String name = strategy.getName(interfce, 
JndiNameStrategy.Interface.BUSINESS_REMOTE);
                 bind("openejb/local/" + name, ref, bindings, beanInfo, 
interfce);
                 bind("openejb/remote/" + name, ref, bindings, beanInfo, 
interfce);
-                bindJava(bean, interfce.getName(), ref);
+                bindJava(bean, interfce, ref, bindings, beanInfo);
                 
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
@@ -428,7 +428,7 @@ public class JndiBuilder {
 
                 name = "openejb/Deployment/" + format(bean.getDeploymentID(), 
bean.getLocalInterface().getName(), InterfaceType.EJB_LOCAL);
                 bind(name, ref, bindings, beanInfo, localHomeInterface);
-                bindJava(bean, localHomeInterface.getName(), ref);
+                bindJava(bean, localHomeInterface, ref, bindings, beanInfo);
 
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
@@ -453,7 +453,7 @@ public class JndiBuilder {
 
                 name = "openejb/Deployment/" + format(bean.getDeploymentID(), 
bean.getRemoteInterface().getName(), InterfaceType.EJB_OBJECT);
                 bind(name, ref, bindings, beanInfo, homeInterface);
-                bindJava(bean, homeInterface.getName(), ref);
+                bindJava(bean, homeInterface, ref, bindings, beanInfo);
 
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
@@ -463,7 +463,7 @@ public class JndiBuilder {
 
         try {
             if (simpleNameRef != null) {
-                bindJava(bean, null, simpleNameRef);
+                bindJava(bean, null, simpleNameRef, bindings, beanInfo);
             }
         } catch (NamingException e) {
             throw new RuntimeException("Unable to bind simple java:global name 
in jndi", e);
@@ -509,7 +509,7 @@ public class JndiBuilder {
 
     private void bind(String name, Reference ref, Bindings bindings, 
EnterpriseBeanInfo beanInfo, Class intrface) throws NamingException {
 
-        if (name.startsWith("openejb/local/") || 
name.startsWith("openejb/remote/") || name.startsWith("openejb/localbean/")) {
+        if (name.startsWith("openejb/local/") || 
name.startsWith("openejb/remote/") || name.startsWith("openejb/localbean/") || 
name.startsWith("openejb/global/")) {
 
             String externalName = name.replaceFirst("openejb/[^/]+/", "");
 
@@ -529,7 +529,7 @@ public class JndiBuilder {
                     beanInfo.jndiNames.add(externalName);
 
                     JndiNameInfo nameInfo = new JndiNameInfo();
-                    nameInfo.intrface = intrface.getName();
+                    nameInfo.intrface = intrface == null ? null : 
intrface.getName();
                     nameInfo.name = externalName;
                     beanInfo.jndiNamess.add(nameInfo);
 
@@ -565,7 +565,7 @@ public class JndiBuilder {
 
     //ee6 specified ejb bindings in module, app, and global contexts
 
-    private void bindJava(BeanContext cdi, String interfaceName, Reference 
ref) throws NamingException {
+    private void bindJava(BeanContext cdi, Class intrface, Reference ref, 
Bindings bindings, EnterpriseBeanInfo beanInfo) throws NamingException {
         Context moduleContext = cdi.getModuleContext().getModuleJndiContext();
         Context appContext = 
cdi.getModuleContext().getAppContext().getAppJndiContext();
         Context globalContext = 
cdi.getModuleContext().getAppContext().getGlobalJndiContext();
@@ -573,8 +573,8 @@ public class JndiBuilder {
         String appName = 
cdi.getModuleContext().getAppContext().isStandaloneModule() ? "" : 
cdi.getModuleContext().getAppContext().getId() + "/";
         String moduleName = cdi.getModuleID() + "/";
         String beanName = cdi.getEjbName();
-        if (interfaceName != null) {
-            beanName = beanName + "!" + interfaceName;
+        if (intrface != null) {
+            beanName = beanName + "!" + intrface.getName();
         }
         try {
             String globalName = "global/" + appName + moduleName + beanName;
@@ -583,13 +583,21 @@ public class JndiBuilder {
                 logger.info(String.format("Jndi(name=\"java:%s\")", 
globalName));
             }
             globalContext.bind(globalName, ref);
+            bind("openejb/global/" + globalName, ref, bindings, beanInfo, 
intrface);
         } catch (NameAlreadyBoundException e) {
             //one interface in more than one role (e.g. both Local and Remote
             return;
         }
-        appContext.bind("app/" + moduleName + beanName, ref);
+        
+        String globalAppName = "app/" + moduleName + beanName;
+        
+        appContext.bind(globalAppName, ref);
+        bind("openejb/global/" + globalAppName, ref, bindings, beanInfo, 
intrface);
+        
         moduleContext.bind("module/" + beanName, ref);
     }
+    
+    
 
     /**
      * This may not be that performant, but it's certain to be faster than the

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 Wed Jun 15 07:09:46 2011
@@ -186,6 +186,11 @@ public class AppModule implements Deploy
     public String getJarLocation() {
         return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() 
: null;
     }
+    
+    public void setModuleId(String moduleId) {
+        
+        this.id = new ID(null, application, moduleId, id.getLocation(), 
id.getUri(), this);
+    }    
 
     public String getModuleId() {
         return id.getName();

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
 Wed Jun 15 07:09:46 2011
@@ -60,7 +60,8 @@ public class CoreContainerSystem impleme
             if (!(jndiContext.lookup("openejb/local") instanceof Context)
             || !(jndiContext.lookup("openejb/remote") instanceof Context)
             || !(jndiContext.lookup("openejb/client") instanceof Context)
-            || !(jndiContext.lookup("openejb/Deployment") instanceof Context)) 
{
+            || !(jndiContext.lookup("openejb/Deployment") instanceof Context)
+            || !(jndiContext.lookup("openejb/global") instanceof Context)) {
                 throw new RuntimeException("core openejb naming context not 
properly initialized.  It must have subcontexts for openejb/local, 
openejb/remote, openejb/client, and openejb/Deployment already present");
             }
         }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmJndiFactory.java
 Wed Jun 15 07:09:46 2011
@@ -41,6 +41,7 @@ public class IvmJndiFactory implements J
             jndiRootContext.bind("openejb/remote/.", "");
             jndiRootContext.bind("openejb/client/.", "");
             jndiRootContext.bind("openejb/Deployment/.", "");
+            jndiRootContext.bind("openejb/global/.", "");
         } catch (javax.naming.NamingException e) {
             throw new RuntimeException("this should not happen", e);
         }

Modified: 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java?rev=1135942&r1=1135941&r2=1135942&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
 (original)
+++ 
openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
 Wed Jun 15 07:09:46 2011
@@ -76,7 +76,9 @@ class JndiRequestHandler {
     private final Context ejbJndiTree;
     private Context clientJndiTree;
     private final Context deploymentsJndiTree;
-//    private final Context globalTree;
+
+    private Context globalJndiTree;    
+
     private final ClusterableRequestHandler clusterableRequestHandler;
     private Context rootContext;
 
@@ -84,8 +86,9 @@ class JndiRequestHandler {
         ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
         ejbJndiTree = (Context) 
containerSystem.getJNDIContext().lookup("openejb/remote");
         deploymentsJndiTree = (Context) 
containerSystem.getJNDIContext().lookup("openejb/Deployment");
-        // TODO if we had an actual global context, we'd look it up like this
-//        globalTree = (Context) 
containerSystem.getJNDIContext().lookup("openejb/global");
+
+        globalJndiTree = (Context) 
containerSystem.getJNDIContext().lookup("openejb/global"); 
+
         rootContext = containerSystem.getJNDIContext();
         try {
             clientJndiTree = (Context) 
containerSystem.getJNDIContext().lookup("openejb/client");
@@ -165,6 +168,8 @@ class JndiRequestHandler {
             context = getGlobalTree();
         } else if (req.getModuleId() != null && 
req.getModuleId().equals("openejb/Deployment")){
             context = deploymentsJndiTree;
+        } else if (req.getModuleId() != null && 
req.getModuleId().equals("openejb/global")){
+            context = globalJndiTree;
         } else if (req.getModuleId() != null && clientJndiTree != null) {
             context = (Context) clientJndiTree.lookup(req.getModuleId());
         } else {


Reply via email to