Title: [2555] branches/v2_1/openejb2/modules/core/src/java/org/openejb: Work on using references in jsr-77 objects instead of looking up names in the kernel.
Revision
2555
Author
djencks
Date
2006-03-14 16:00:57 -0500 (Tue, 14 Mar 2006)

Log Message

Work on using references in jsr-77 objects instead of looking up names in the kernel.

Modified Paths

Diff

Modified: branches/v2_1/openejb2/modules/core/src/java/org/openejb/EJBModuleImpl.java (2554 => 2555)

--- branches/v2_1/openejb2/modules/core/src/java/org/openejb/EJBModuleImpl.java	2006-03-14 20:49:33 UTC (rev 2554)
+++ branches/v2_1/openejb2/modules/core/src/java/org/openejb/EJBModuleImpl.java	2006-03-14 21:00:57 UTC (rev 2555)
@@ -47,37 +47,31 @@
  */
 package org.openejb;
 
-import java.util.Hashtable;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.gbean.GBeanLifecycle;
-import org.apache.geronimo.management.J2EEApplication;
-import org.apache.geronimo.management.J2EEServer;
-import org.apache.geronimo.management.EJBModule;
-import org.apache.geronimo.j2ee.management.impl.InvalidObjectNameException;
-import org.apache.geronimo.j2ee.management.impl.Util;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
-import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
-import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
+import org.apache.geronimo.j2ee.management.impl.InvalidObjectNameException;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.management.EJB;
+import org.apache.geronimo.management.EJBModule;
+import org.apache.geronimo.management.J2EEApplication;
+import org.apache.geronimo.management.J2EEServer;
 import org.apache.geronimo.transaction.context.TransactionContextManager;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.openejb.entity.cmp.ConnectionProxyFactory;
 import org.tranql.ejb.TransactionManagerDelegate;
 import org.tranql.query.ConnectionFactoryDelegate;
 
+import javax.management.ObjectName;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+
 /**
  * @version $Revision$ $Date$
  */
 public class EJBModuleImpl implements GBeanLifecycle, EJBModule {
-    private final static Log log = LogFactory.getLog(EJBModuleImpl.class);
-    private final Kernel kernel;
-    private final J2eeContext moduleContext;
     private final J2EEServer server;
     private final J2EEApplication application;
     private final String deploymentDescriptor;
@@ -85,16 +79,15 @@
     private final ConnectionProxyFactory connectionFactory;
     private final TransactionManagerDelegate tmDelegate;
     private final TransactionContextManager transactionContextManager;
-    private final String[] J2EE_TYPES = {NameFactory.ENTITY_BEAN, NameFactory.STATELESS_SESSION_BEAN, NameFactory.STATEFUL_SESSION_BEAN, NameFactory.MESSAGE_DRIVEN_BEAN};
     private final String objectName;
 
-    public EJBModuleImpl(Kernel kernel, String objectName, J2EEServer server, J2EEApplication application, String deploymentDescriptor, ConnectionFactoryDelegate delegate, ConnectionProxyFactory connectionFactory, TransactionManagerDelegate tmDelegate, TransactionContextManager transactionContextManager) {
+    private final Collection ejbs;
+
+    public EJBModuleImpl(String objectName, J2EEServer server, J2EEApplication application, String deploymentDescriptor, ConnectionFactoryDelegate delegate, ConnectionProxyFactory connectionFactory, TransactionManagerDelegate tmDelegate, TransactionContextManager transactionContextManager, Collection ejbs) {
         this.objectName = objectName;
         ObjectName myObjectName = JMXUtil.getObjectName(objectName);
         verifyObjectName(myObjectName);
-        moduleContext = J2eeContextImpl.newContext(myObjectName, NameFactory.EJB_MODULE);
 
-        this.kernel = kernel;
         this.server = server;
         this.application = application;
         this.deploymentDescriptor = deploymentDescriptor;
@@ -102,6 +95,7 @@
         this.connectionFactory = connectionFactory;
         this.tmDelegate = tmDelegate;
         this.transactionContextManager = transactionContextManager;
+        this.ejbs = ejbs;
     }
 
     public String getObjectName() {
@@ -140,14 +134,15 @@
     }
 
     public String[] getEJBs() {
-        try {
-            return Util.getObjectNames(kernel,
-                    moduleContext,
-                    J2EE_TYPES);
-        } catch (MalformedObjectNameException e) {
-            log.error(e);
-            return null;
+        ArrayList copy;
+        synchronized (ejbs) {
+            copy = new ArrayList(ejbs);
         }
+        String[] result = new String[copy.size()];
+        for (int i = 0; i < result.length; i++) {
+            result[i] = ((EJB) copy.get(i)).getObjectName();
+        }
+        return result;
     }
 
     /**
@@ -181,7 +176,7 @@
         if (delegate != null) {
             delegate.setConnectionFactory(connectionFactory.$getResource());
         }
-        if ( null != tmDelegate ) {
+        if (null != tmDelegate) {
             tmDelegate.setTransactionManager(transactionContextManager.getTransactionManager());
         }
     }
@@ -190,7 +185,7 @@
         if (delegate != null) {
             delegate.setConnectionFactory(null);
         }
-        if ( null != tmDelegate ) {
+        if (null != tmDelegate) {
             tmDelegate.setTransactionManager(null);
         }
     }
@@ -199,7 +194,7 @@
         if (delegate != null) {
             delegate.setConnectionFactory(null);
         }
-        if ( null != tmDelegate ) {
+        if (null != tmDelegate) {
             tmDelegate.setTransactionManager(null);
         }
     }
@@ -224,18 +219,21 @@
         infoBuilder.addAttribute("javaVMs", String[].class, false);
         infoBuilder.addAttribute("ejbs", String[].class, false);
 
+        infoBuilder.addReference("EJBCollection", EJB.class);
+
         infoBuilder.addInterface(EJBModule.class);
 
         infoBuilder.setConstructor(new String[]{
-            "kernel",
-            "objectName",
-            "J2EEServer",
-            "J2EEApplication",
-            "deploymentDescriptor",
-            "Delegate",
-            "ConnectionFactory",
-            "TMDelegate",
-            "TransactionContextManager"});
+                "objectName",
+                "J2EEServer",
+                "J2EEApplication",
+                "deploymentDescriptor",
+                "Delegate",
+                "ConnectionFactory",
+                "TMDelegate",
+                "TransactionContextManager",
+                "EJBCollection"
+        });
 
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }

Modified: branches/v2_1/openejb2/modules/core/src/java/org/openejb/GenericEJBContainer.java (2554 => 2555)

--- branches/v2_1/openejb2/modules/core/src/java/org/openejb/GenericEJBContainer.java	2006-03-14 20:49:33 UTC (rev 2554)
+++ branches/v2_1/openejb2/modules/core/src/java/org/openejb/GenericEJBContainer.java	2006-03-14 21:00:57 UTC (rev 2555)
@@ -47,21 +47,6 @@
  */
 package org.openejb;
 
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.rmi.RemoteException;
-import java.util.Iterator;
-import java.util.Map;
-import javax.ejb.EJBHome;
-import javax.ejb.EJBLocalHome;
-import javax.ejb.EJBLocalObject;
-import javax.ejb.EJBObject;
-import javax.ejb.Handle;
-import javax.ejb.Timer;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.security.auth.Subject;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.core.service.Interceptor;
@@ -72,9 +57,11 @@
 import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.management.EJB;
+import org.apache.geronimo.management.J2EEManagedObject;
+import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
 import org.apache.geronimo.naming.reference.ClassLoaderAwareReference;
 import org.apache.geronimo.naming.reference.KernelAwareReference;
-import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
 import org.apache.geronimo.security.ContextManager;
 import org.apache.geronimo.security.deploy.DefaultPrincipal;
 import org.apache.geronimo.security.util.ConfigurationUtil;
@@ -82,23 +69,36 @@
 import org.apache.geronimo.transaction.TrackedConnectionAssociator;
 import org.apache.geronimo.transaction.context.TransactionContextManager;
 import org.apache.geronimo.transaction.context.UserTransactionImpl;
-import org.apache.geronimo.management.J2EEManagedObject;
-
 import org.openejb.cache.InstancePool;
 import org.openejb.client.EJBObjectHandler;
 import org.openejb.client.EJBObjectProxy;
+import org.openejb.corba.TSSBean;
 import org.openejb.dispatch.InterfaceMethodSignature;
 import org.openejb.dispatch.SystemMethodIndices;
 import org.openejb.proxy.EJBProxyFactory;
 import org.openejb.proxy.ProxyInfo;
 import org.openejb.timer.BasicTimerServiceImpl;
-import org.openejb.corba.TSSBean;
 
+import javax.ejb.EJBHome;
+import javax.ejb.EJBLocalHome;
+import javax.ejb.EJBLocalObject;
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.ejb.Timer;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.security.auth.Subject;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.Iterator;
+import java.util.Map;
 
+
 /**
  * @version $Revision$ $Date$
  */
-public class GenericEJBContainer implements EJBContainer, GBeanLifecycle, J2EEManagedObject {
+public class GenericEJBContainer implements EJBContainer, GBeanLifecycle, EJB {
 
     private static Log log = LogFactory.getLog(GenericEJBContainer.class);
 
@@ -493,6 +493,8 @@
 
         infoFactory.addOperation("getTimerById", new Class[]{Long.class});
 
+        infoFactory.addInterface(EJB.class);
+
         infoFactory.setConstructor(new String[]{
             "containerID",
             "ejbName",

Modified: branches/v2_1/openejb2/modules/core/src/java/org/openejb/mdb/MDBContainer.java (2554 => 2555)

--- branches/v2_1/openejb2/modules/core/src/java/org/openejb/mdb/MDBContainer.java	2006-03-14 20:49:33 UTC (rev 2554)
+++ branches/v2_1/openejb2/modules/core/src/java/org/openejb/mdb/MDBContainer.java	2006-03-14 21:00:57 UTC (rev 2555)
@@ -79,6 +79,7 @@
 import org.apache.geronimo.transaction.context.UserTransactionImpl;
 import org.apache.geronimo.transaction.manager.NamedXAResource;
 import org.apache.geronimo.transaction.manager.WrapperNamedXAResource;
+import org.apache.geronimo.management.MessageDrivenBean;
 import org.openejb.TwoChains;
 import org.openejb.cache.InstancePool;
 import org.openejb.dispatch.InterfaceMethodSignature;
@@ -88,7 +89,7 @@
 /**
  * @version $Revision$ $Date$
  */
-public class MDBContainer implements MessageEndpointFactory, GBeanLifecycle {
+public class MDBContainer implements MessageEndpointFactory, GBeanLifecycle, MessageDrivenBean {
     private final ActivationSpecWrapper activationSpecWrapper;
     private final ClassLoader classLoader;
     private final EndpointFactory endpointFactory;
@@ -101,6 +102,7 @@
     private final TransactionContextManager transactionContextManager;
     private final Map methodIndexMap;
     private final BasicTimerServiceImpl timerService;
+    private final String objectName;
 
     public MDBContainer(String containerId,
             String ejbName,
@@ -131,6 +133,7 @@
 
         this.classLoader = classLoader;
 
+        this.objectName = objectName;
         this.containerId = containerId;
         this.ejbName = ejbName;
         this.signatures = signatures;
@@ -270,7 +273,22 @@
         return methodIndexMap;
     }
 
+    public String getObjectName() {
+        return objectName;
+    }
 
+    public boolean isStateManageable() {
+        return false;
+    }
+
+    public boolean isStatisticsProvider() {
+        return false;
+    }
+
+    public boolean isEventProvider() {
+        return false;
+    }
+
     public static final GBeanInfo GBEAN_INFO;
 
     static {
@@ -297,6 +315,8 @@
         infoFactory.addAttribute("kernel", Kernel.class, false);
 
         infoFactory.addOperation("getTimerById", new Class[]{Long.class});
+
+        infoFactory.addInterface(MessageDrivenBean.class);
         
         infoFactory.setConstructor(new String[]{
             "containerId",

Reply via email to