You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/12/01 07:52:30 UTC

svn commit: r109305 - in geronimo/trunk/modules: connector-builder/src/java/org/apache/geronimo/connector/deployment deployment/src/java/org/apache/geronimo/deployment deployment/src/java/org/apache/geronimo/deployment/service

Author: dain
Date: Tue Nov 30 22:52:30 2004
New Revision: 109305

URL: http://svn.apache.org/viewcvs?view=rev&rev=109305
Log:
Removed my objection to starting the configurations.
Added code to verify that the configurations are actually started.
Converted more GBeanMBean usage to GBeanData.

Modified:
   geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
   geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
   geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java

Modified: geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java?view=diff&rev=109305&p1=geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java&r1=109304&p2=geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java&r2=109305
==============================================================================
--- geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java	(original)
+++ geronimo/trunk/modules/connector-builder/src/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java	Tue Nov 30 22:52:30 2004
@@ -37,9 +37,9 @@
 import javax.naming.Reference;
 
 import org.apache.geronimo.common.propertyeditor.PropertyEditors;
-import org.apache.geronimo.connector.ResourceAdapterModuleImpl;
-import org.apache.geronimo.connector.AdminObjectWrapper;
 import org.apache.geronimo.connector.ActivationSpecWrapper;
+import org.apache.geronimo.connector.AdminObjectWrapper;
+import org.apache.geronimo.connector.ResourceAdapterModuleImpl;
 import org.apache.geronimo.connector.outbound.JCAConnectionFactoryImpl;
 import org.apache.geronimo.connector.outbound.ManagedConnectionFactoryWrapper;
 import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
@@ -61,7 +61,6 @@
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.gbean.InvalidConfigurationException;
-import org.apache.geronimo.gbean.jmx.GBeanMBean;
 import org.apache.geronimo.j2ee.deployment.ConnectorModule;
 import org.apache.geronimo.j2ee.deployment.EARContext;
 import org.apache.geronimo.j2ee.deployment.Module;
@@ -362,7 +361,7 @@
         GBeanData resourceAdapterModuleData = earContext.getRefContext().getResourceAdapterModuleData(resourceAdapterModuleName);
 
         // add it
-        earContext.addGBean(resourceAdapterModuleData, cl);
+        earContext.addGBean(resourceAdapterModuleData);
 
         GerConnectorType geronimoConnector = (GerConnectorType) module.getVendorDD();
 
@@ -407,7 +406,7 @@
                     throw new DeploymentException("Could not construct resource adapter object name", e);
                 }
                 resourceAdapterInstanceGBeanData.setName(resourceAdapterObjectName);
-                earContext.addGBean(resourceAdapterInstanceGBeanData, cl);
+                earContext.addGBean(resourceAdapterInstanceGBeanData);
             }
 
             // Outbound Managed Connection Factories (think JDBC data source or JMS connection factory)
@@ -419,7 +418,7 @@
                     assert geronimoConnectionDefinition != null: "Null GeronimoConnectionDefinition";
 
                     String connectionFactoryInterfaceName = geronimoConnectionDefinition.getConnectionfactoryInterface().getStringValue().trim();
-                    GBeanData connectionFactoryGBeanData = (GBeanData) earContext.getRefContext().getConnectionFactoryInfo(resourceAdapterModuleObjectName, connectionFactoryInterfaceName);
+                    GBeanData connectionFactoryGBeanData = earContext.getRefContext().getConnectionFactoryInfo(resourceAdapterModuleObjectName, connectionFactoryInterfaceName);
 
                     if (connectionFactoryGBeanData == null) {
                         throw new DeploymentException("No connection definition for ConnectionFactory class: " + connectionFactoryInterfaceName);
@@ -440,7 +439,7 @@
             GerAdminobjectType gerAdminObject = geronimoConnector.getAdminobjectArray()[i];
 
             String adminObjectInterface = gerAdminObject.getAdminobjectInterface().getStringValue();
-            GBeanData adminObjectGBeanData = (GBeanData) earContext.getRefContext().getAdminObjectInfo(resourceAdapterModuleObjectName, adminObjectInterface);
+            GBeanData adminObjectGBeanData = earContext.getRefContext().getAdminObjectInfo(resourceAdapterModuleObjectName, adminObjectInterface);
 
             if (adminObjectGBeanData == null) {
                 throw new DeploymentException("No admin object declared for interface: " + adminObjectInterface);
@@ -458,7 +457,7 @@
                     throw new DeploymentException("Could not construct admin object object name", e);
                 }
                 adminObjectInstanceGBeanData.setName(adminObjectObjectName);
-                earContext.addGBean(adminObjectInstanceGBeanData, cl);
+                earContext.addGBean(adminObjectInstanceGBeanData);
             }
         }
     }
@@ -617,14 +616,25 @@
             }
         }
 
-        //we configure our connection manager
-        GerConnectionmanagerType connectionManager = connectionfactoryInstance.getConnectionmanager();
-        GBeanMBean connectionManagerGBean;
+        // create the object name for our connection manager
+        ObjectName connectionManagerObjectName = null;
         try {
-            connectionManagerGBean = new GBeanMBean(GBeanInfo.getGBeanInfo("org.apache.geronimo.connector.outbound.GenericConnectionManager", cl), cl);
+            connectionManagerObjectName = NameFactory.getResourceComponentName(null, null, null, null, connectionfactoryInstance.getName(), NameFactory.JCA_CONNECTION_MANAGER, j2eeContext);
+        } catch (MalformedObjectNameException e) {
+            throw new DeploymentException("Could not construct connection manager object name", e);
+        }
+
+        // create the data holder for our connection manager
+        GBeanInfo gbeanInfo;
+        try {
+            gbeanInfo = GBeanInfo.getGBeanInfo("org.apache.geronimo.connector.outbound.GenericConnectionManager", cl);
         } catch (InvalidConfigurationException e) {
             throw new DeploymentException("Unable to create GMBean", e);
         }
+        GBeanData connectionManagerGBean = new GBeanData(connectionManagerObjectName, gbeanInfo);
+
+        //we configure our connection manager
+        GerConnectionmanagerType connectionManager = connectionfactoryInstance.getConnectionmanager();
         TransactionSupport transactionSupport = null;
         if (connectionManager.isSetNoTransaction()) {
             transactionSupport = NoTransactions.INSTANCE;
@@ -685,14 +695,7 @@
             throw new DeploymentException("Problem setting up ConnectionManager", e);
         }
 
-        // add it
-        ObjectName connectionManagerObjectName = null;
-        try {
-            connectionManagerObjectName = NameFactory.getResourceComponentName(null, null, null, null, connectionfactoryInstance.getName(), NameFactory.JCA_CONNECTION_MANAGER, j2eeContext);
-        } catch (MalformedObjectNameException e) {
-            throw new DeploymentException("Could not construct connection manager object name", e);
-        }
-        earContext.addGBean(connectionManagerObjectName, connectionManagerGBean);
+        earContext.addGBean(connectionManagerGBean);
         return connectionManagerObjectName;
     }
 
@@ -718,11 +721,11 @@
             }
             managedConnectionFactoryInstanceGBeanData.setReferencePattern("ConnectionManagerFactory", connectionManagerObjectName);
             if (connectiondefinitionInstance.getCredentialInterface() != null && "javax.resource.spi.security.PasswordCredential".equals(connectiondefinitionInstance.getCredentialInterface().getStringValue())) {
-                GBeanMBean realmGBean = new GBeanMBean(PasswordCredentialRealm.getGBeanInfo(), cl);
+                ObjectName realmObjectName = ObjectName.getInstance(BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME + connectiondefinitionInstance.getName());
+                GBeanData realmGBean = new GBeanData(realmObjectName, PasswordCredentialRealm.getGBeanInfo());
                 realmGBean.setAttribute("realmName", BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME + connectiondefinitionInstance.getName());
-                ObjectName realmObjectNam = ObjectName.getInstance(BASE_PASSWORD_CREDENTIAL_LOGIN_MODULE_NAME + connectiondefinitionInstance.getName());
-                earContext.addGBean(realmObjectNam, realmGBean);
-                managedConnectionFactoryInstanceGBeanData.setReferencePattern("ManagedConnectionFactoryListener", realmObjectNam);
+                earContext.addGBean(realmGBean);
+                managedConnectionFactoryInstanceGBeanData.setReferencePattern("ManagedConnectionFactoryListener", realmObjectName);
             }
             //additional interfaces implemented by connection factory
             FullyQualifiedClassType[] implementedInterfaceElements = connectiondefinitionInstance.getImplementedInterfaceArray();
@@ -744,7 +747,7 @@
             throw new DeploymentException("Could not construct managed connection factory object name", e);
         }
         managedConnectionFactoryInstanceGBeanData.setName(managedConnectionFactoryObjectName);
-        earContext.addGBean(managedConnectionFactoryInstanceGBeanData, cl);
+        earContext.addGBean(managedConnectionFactoryInstanceGBeanData);
 
         // ConnectionFactory
         ObjectName connectionFactoryObjectName = null;
@@ -757,7 +760,7 @@
         connectionFactoryGBeanData.setReferencePattern("J2EEServer", earContext.getServerObjectName());
         connectionFactoryGBeanData.setAttribute("managedConnectionFactory", managedConnectionFactoryObjectName.getCanonicalName());
 
-        earContext.addGBean(connectionFactoryGBeanData, cl);
+        earContext.addGBean(connectionFactoryGBeanData);
     }
 
     private static URI getDependencyURI(GerDependencyType dependency) throws DeploymentException {

Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java?view=diff&rev=109305&p1=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java&r1=109304&p2=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java&r2=109305
==============================================================================
--- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	(original)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentContext.java	Tue Nov 30 22:52:30 2004
@@ -67,7 +67,7 @@
      */
     private final ConfigurationModuleType type;
     private final Kernel kernel;
-    private final GBeanMBean config;
+    private final GBeanData config;
     private final Map gbeans = new HashMap();
     private final Set dependencies = new LinkedHashSet();
     private final LinkedHashSet classPath = new LinkedHashSet();
@@ -95,7 +95,7 @@
         this.baseDir = baseDir;
         this.baseUri = baseDir.toURI();
 
-        config = new GBeanMBean(Configuration.GBEAN_INFO);
+        config = new GBeanData(Configuration.getConfigurationObjectName(configID), Configuration.GBEAN_INFO);
 
         try {
             config.setAttribute("ID", configID);
@@ -117,16 +117,21 @@
             }
 
             try {
-                // todo it is a really bad to start the configurations
-                ObjectName currentConfig = parentName;
-                while ( State.RUNNING != State.fromInteger((Integer) kernel.getAttribute(currentConfig, "state")) ) {
-                    kernel.startGBean(currentConfig);
-                    URI currentParentID = (URI) kernel.getAttribute(currentConfig, "parentID");
-                    if ( null == currentParentID ) {
+                // starting with the current config start all parents until
+                // there are either no more parents or a parent is already running
+                for (Iterator iterator = ancestors.iterator(); iterator.hasNext();) {
+                    ObjectName name = (ObjectName) iterator.next();
+                    if (isRunning(kernel, name) ) {
+                        // configuration is already running... we can stop now
                         break;
                     }
-                    currentConfig = Configuration.getConfigurationObjectName(currentParentID);
+                    kernel.startGBean(name);
+                    if (!isRunning(kernel, name) ) {
+                        throw new DeploymentException("Failed to start parent configuration: " + name);
+                    }
                 }
+            } catch (DeploymentException e) {
+                throw e;
             } catch (Exception e) {
                 throw new DeploymentException(e);
             }
@@ -145,6 +150,10 @@
         }
     }
 
+    private static boolean isRunning(Kernel kernel, ObjectName name) throws Exception {
+        return State.RUNNING_INDEX == ((Integer) kernel.getAttribute(name, "state")).intValue();
+    }
+
     public URI getConfigID() {
         return configID;
     }
@@ -157,13 +166,16 @@
         return baseDir;
     }
 
+    /**
+     * @deprecated use addGBean(GBeanData gbean)
+     */
     public void addGBean(ObjectName name, GBeanMBean gbean) {
         gbeans.put(name, gbean);
     }
 
-    public void addGBean(GBeanData gbean, ClassLoader classLoader) {
-        GBeanMBean gbeanMBean = new GBeanMBean(gbean, classLoader);
-        gbeans.put(gbean.getName(), gbeanMBean);
+    public void addGBean(GBeanData gbean) {
+        assert gbean.getName() != null: "GBean name is null";
+        gbeans.put(gbean.getName(), gbean);
     }
 
     public void addDependency(URI uri) {
@@ -421,9 +433,7 @@
         try {
             out = new ObjectOutputStream(new FileOutputStream(configSer));
             try {
-                GBeanData gbeanData = config.getGBeanData();
-                gbeanData.setName(Configuration.getConfigurationObjectName(configID));
-                gbeanData.writeExternal(out);
+                config.writeExternal(out);
             } catch (IOException e) {
                 throw e;
             } catch (Exception e) {

Modified: geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java?view=diff&rev=109305&p1=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java&r1=109304&p2=geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java&r2=109305
==============================================================================
--- geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java	(original)
+++ geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/deployment/service/GBeanHelper.java	Tue Nov 30 22:52:30 2004
@@ -45,6 +45,6 @@
             builder.setReference(gbean.getReferencesName(j), gbean.getReferencesPatternArray(j));
         }
 
-        context.addGBean(builder.getGBeanData(), cl);
+        context.addGBean(builder.getGBeanData());
     }
 }