You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/06/13 05:09:08 UTC

svn commit: r1135015 - in /openejb/trunk/openejb3/server/openejb-ejbd/src: main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java test/java/org/apache/openejb/server/ejbd/AppClientTest.java

Author: dblevins
Date: Mon Jun 13 03:09:07 2011
New Revision: 1135015

URL: http://svn.apache.org/viewvc?rev=1135015&view=rev
Log:
OPENEJB-1140: EE6 Global JNDI
Small hack for getting a global JNDI remotely accessible.  Since each app has an "app scoped" global jndi and we don't have a real global JNDI this lookup technique will not work if there is more than one app in the system.
Once we get an actual global jndi, this same technique can be used, just with lookups going against the real global context

Modified:
    openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/JndiRequestHandler.java
    openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/AppClientTest.java

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=1135015&r1=1135014&r2=1135015&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 Mon Jun 13 03:09:07 2011
@@ -36,6 +36,7 @@ import javax.naming.NamingException;
 import javax.sql.DataSource;
 import javax.xml.namespace.QName;
 
+import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.Injection;
 import org.apache.openejb.ProxyInfo;
@@ -75,6 +76,7 @@ class JndiRequestHandler {
     private final Context ejbJndiTree;
     private Context clientJndiTree;
     private final Context deploymentsJndiTree;
+//    private final Context globalTree;
     private final ClusterableRequestHandler clusterableRequestHandler;
     private Context rootContext;
 
@@ -82,6 +84,8 @@ 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");
         rootContext = containerSystem.getJNDIContext();
         try {
             clientJndiTree = (Context) containerSystem.getJNDIContext().lookup("openejb/client");
@@ -157,6 +161,8 @@ class JndiRequestHandler {
 
         if (name.startsWith("openejb/Deployment/")) {
             context = rootContext;
+        } else if (name.startsWith("global/")) {
+            context = getGlobalTree();
         } else if (req.getModuleId() != null && req.getModuleId().equals("openejb/Deployment")){
             context = deploymentsJndiTree;
         } else if (req.getModuleId() != null && clientJndiTree != null) {
@@ -473,6 +479,15 @@ class JndiRequestHandler {
         }
     }
 
+    // TODO this is a terrible hack
+    // We don't actually have a global context yet
+    public Context getGlobalTree() {
+        for (AppContext appContext : SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts()) {
+            return appContext.getGlobalJndiContext();
+        }
+
+        return new IvmContext();
+    }
 
     public static class DbcpDataSource {
         private final Object object;

Modified: openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/AppClientTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/AppClientTest.java?rev=1135015&r1=1135014&r2=1135015&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/AppClientTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/AppClientTest.java Mon Jun 13 03:09:07 2011
@@ -69,7 +69,7 @@ public class AppClientTest extends TestC
         final Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
         final ConfigurationFactory config = new ConfigurationFactory();
 
-        final EjbModule ejbModule = new EjbModule(new EjbJar(), new OpenejbJar());
+        final EjbModule ejbModule = new EjbModule(new EjbJar("testejbmodule"), new OpenejbJar());
         final EjbJar ejbJar = ejbModule.getEjbJar();
         ejbJar.addEnterpriseBean(new StatelessBean(Orange.class));
 
@@ -77,7 +77,7 @@ public class AppClientTest extends TestC
 
         final ClientModule clientModule = new ClientModule(new ApplicationClient(), loader, "orange-client", OrangeAppClient.class.getName(), "orange-client");
 
-        final AppModule appModule = new AppModule(loader, "test");
+        final AppModule appModule = new AppModule(loader, "testapp");
 
         appModule.getClientModules().add(clientModule);
         appModule.getEjbModules().add(ejbModule);
@@ -102,6 +102,11 @@ public class AppClientTest extends TestC
         assertTrue(business instanceof OrangeBusinessRemote);
         OrangeBusinessRemote orangeBusinessRemote = (OrangeBusinessRemote) business;
         assertEquals("nap", orangeBusinessRemote.echo("pan"));
+
+        final Object global = context.lookup("global/testapp/testejbmodule/Orange!" + OrangeBusinessRemote.class.getName());
+        assertTrue(global instanceof OrangeBusinessRemote);
+        OrangeBusinessRemote globalOrangeBusinessRemote = (OrangeBusinessRemote) global;
+        assertEquals("nap", globalOrangeBusinessRemote.echo("pan"));
     }
 
     public static interface OrangeHome extends EJBHome {