[Jboss-cvs] JBossAS SVN: r56887 - in branches/MC_VDF_WORK: server/src/etc/conf/default system-jmx/src/main/org/jboss/system system-jmx/src/main/org/jboss/system/deployers
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Sep 15 11:12:12 EDT 2006
Author: adrian at jboss.org
Date: 2006-09-15 11:12:03 -0400 (Fri, 15 Sep 2006)
New Revision: 56887
Added:
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java
Modified:
branches/MC_VDF_WORK/server/src/etc/conf/default/deployer-beans.xml
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/ServiceController.java
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceClassLoaderDeployer.java
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployment.java
Log:
[JBMICROCONT-5] - Componentization of the Service and Bean deployers.
Modified: branches/MC_VDF_WORK/server/src/etc/conf/default/deployer-beans.xml
===================================================================
--- branches/MC_VDF_WORK/server/src/etc/conf/default/deployer-beans.xml 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/server/src/etc/conf/default/deployer-beans.xml 2006-09-15 15:12:03 UTC (rev 56887)
@@ -33,7 +33,8 @@
<list>
<!-- POJO Deployment -->
<bean name="BeanDeployer" class="org.jboss.deployers.plugins.deployers.kernel.BeanDeployer"/>
- <bean name="KernelDeployer" class="org.jboss.deployers.plugins.deployers.kernel.KernelDeployer">
+ <bean name="KernelDeploymentDeployer" class="org.jboss.deployers.plugins.deployers.kernel.KernelDeploymentDeployer"/>
+ <bean name="BeanMetaDataDeployer" class="org.jboss.deployers.plugins.deployers.kernel.BeanMetaDataDeployer">
<constructor><parameter><inject bean="jboss.kernel:service=Kernel"/></parameter></constructor>
</bean>
<!-- JMX Deployment -->
@@ -41,6 +42,7 @@
<bean name="ServiceClassLoaderDeployer" class="org.jboss.system.deployers.ServiceClassLoaderDeployer">
<constructor><parameter><inject bean="JMXKernel" property="serviceController"/></parameter></constructor>
</bean>
+ <bean name="ServiceDeploymentDeployer" class="org.jboss.system.deployers.ServiceDeploymentDeployer"/>
<bean name="ServiceDeployer" class="org.jboss.system.deployers.ServiceDeployer">
<constructor><parameter><inject bean="JMXKernel" property="serviceController"/></parameter></constructor>
</bean>
Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/ServiceController.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/ServiceController.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/ServiceController.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -258,6 +258,26 @@
return result;
}
+ public ObjectName install(ServiceMetaData metaData, ObjectName loaderName) throws DeploymentException
+ {
+ KernelController controller = kernel.getController();
+ metaData.setClassLoaderName(loaderName);
+ ObjectName name = metaData.getObjectName();
+
+ // Install the context to the configured level
+ ServiceControllerContext context = new ServiceControllerContext(this, metaData);
+ try
+ {
+ doInstall(controller, context);
+ doChange(controller, context, ControllerState.CONFIGURED, "configure");
+ return context.getObjectName();
+ }
+ catch (Throwable t)
+ {
+ throw DeploymentException.rethrowAsDeploymentException("Error during install " + name, t);
+ }
+ }
+
public List<ObjectName> install(Element config, ObjectName loaderName) throws DeploymentException
{
// Parse the xml
Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -73,11 +73,6 @@
super(ServiceDeployment.class);
}
- public int getRelativeOrder()
- {
- return 1000;
- }
-
/**
* Get the useNamespaceAwareParser.
*
Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceClassLoaderDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceClassLoaderDeployer.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceClassLoaderDeployer.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -65,11 +65,6 @@
throw new IllegalArgumentException("Null controller");
this.controller = controller;
}
-
- public int getRelativeOrder()
- {
- return 2000;
- }
public ClassLoader createTopLevelClassLoader(DeploymentContext context) throws Exception
{
Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -21,7 +21,6 @@
*/
package org.jboss.system.deployers;
-import java.util.List;
import java.util.Set;
import javax.management.ObjectName;
@@ -30,9 +29,9 @@
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.DeploymentUnit;
import org.jboss.mx.loading.RepositoryClassLoader;
+import org.jboss.system.ServiceContext;
import org.jboss.system.ServiceController;
import org.jboss.system.metadata.ServiceMetaData;
-import org.w3c.dom.Element;
/**
* ServiceDeployer.<p>
@@ -43,11 +42,11 @@
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
-public class ServiceDeployer extends AbstractRealDeployer<ServiceDeployment>
+public class ServiceDeployer extends AbstractRealDeployer<ServiceMetaData>
{
/** The service controller */
private final ServiceController controller;
-
+
/**
* Create a new ServiceDeployer.
*
@@ -56,7 +55,7 @@
*/
public ServiceDeployer(ServiceController controller)
{
- super(ServiceDeployment.class);
+ super(ServiceMetaData.class);
if (controller == null)
throw new IllegalArgumentException("Null controller");
this.controller = controller;
@@ -64,132 +63,115 @@
public void deploy(DeploymentUnit unit) throws DeploymentException
{
- Set<ServiceDeployment> deployments = getAllMetaData(unit);
- for (ServiceDeployment deployment : deployments)
+ Set<ServiceMetaData> services = getAllMetaData(unit);
+ for (ServiceMetaData service : services)
{
+ ObjectName name = service.getObjectName();
try
{
- ObjectName loaderName = deployment.getLoaderName();
+ ObjectName loaderName = service.getClassLoaderName();
if (loaderName == null)
{
ClassLoader cl = unit.getClassLoader();
if (cl != null && cl instanceof RepositoryClassLoader)
loaderName = ((RepositoryClassLoader) cl).getObjectName();
}
-
- List<ServiceMetaData> services = deployment.getServices();
- Element config = deployment.getConfig();
- List<ObjectName> names = null;
- if (services != null)
- names = controller.install(services, loaderName);
- else if (config != null)
- names = controller.install(config, loaderName);
- else
- {
- log.debug("Service deployment has no services: " + deployment.getName());
- continue;
- }
-
- deployment.setServiceNames(names);
+
+ controller.install(service, loaderName);
try
{
- create(names);
+ ServiceContext context = controller.getServiceContext(name);
+ create(context);
try
{
- start(names);
+ start(context);
}
catch (Throwable t)
{
- stop(names);
- destroy(names);
+ destroy(name);
+ throw t;
}
}
catch (Throwable t)
{
- remove(names);
- deployment.setServices(null);
+ remove(name);
+ throw t;
}
}
catch (Throwable t)
{
- throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + deployment.getName(), t);
+ // TODO better unwind
+ undeploy(unit);
+ throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + name, t);
}
}
}
public void undeploy(DeploymentUnit unit)
{
- Set<ServiceDeployment> deployments = getAllMetaData(unit);
- for (ServiceDeployment deployment : deployments)
+ Set<ServiceMetaData> services = getAllMetaData(unit);
+ for (ServiceMetaData service : services)
{
- List<ObjectName> names = deployment.getServiceNames();
- if (names == null)
- continue;
-
- stop(names);
- destroy(names);
- remove(names);
- deployment.setServices(null);
+ ObjectName name = service.getObjectName();
+ ServiceContext context = controller.getServiceContext(name);
+ if (context != null)
+ {
+ stop(name);
+ destroy(name);
+ remove(name);
+ }
}
}
- protected void create(List<ObjectName> names) throws Exception
+ protected void create(ServiceContext context) throws Throwable
{
- for (ObjectName name : names)
- controller.create(name);
+ controller.create(context.objectName);
+ Throwable problem = context.problem;
+ if (problem != null)
+ throw problem;
}
- protected void start(List<ObjectName> names) throws Exception
+ protected void start(ServiceContext context) throws Throwable
{
- for (ObjectName name : names)
- controller.start(name);
+ controller.start(context.objectName);
+ Throwable problem = context.problem;
+ if (problem != null)
+ throw problem;
}
- protected void stop(List<ObjectName> names)
+ protected void stop(ObjectName name)
{
- for (int i = names.size()-1; i >=0 ; --i)
+ try
{
- ObjectName name = names.get(i);
- try
- {
- controller.stop(name);
- }
- catch (Throwable t)
- {
- log.warn("Error during stop for " + name, t);
- }
+ controller.stop(name);
}
+ catch (Throwable t)
+ {
+ log.warn("Error during stop for " + name, t);
+ }
}
- protected void destroy(List<ObjectName> names)
+ protected void destroy(ObjectName name)
{
- for (int i = names.size()-1; i >=0 ; --i)
+ try
{
- ObjectName name = names.get(i);
- try
- {
- controller.destroy(name);
- }
- catch (Throwable t)
- {
- log.warn("Error during destroy for " + name, t);
- }
+ controller.destroy(name);
}
+ catch (Throwable t)
+ {
+ log.warn("Error during destroy for " + name, t);
+ }
}
- protected void remove(List<ObjectName> names)
+ protected void remove(ObjectName name)
{
- for (int i = names.size()-1; i >=0 ; --i)
+ try
{
- ObjectName name = names.get(i);
- try
- {
- controller.remove(name);
- }
- catch (Throwable t)
- {
- log.warn("Error during remove for " + name, t);
- }
+ controller.remove(name);
}
+ catch (Throwable t)
+ {
+ log.warn("Error during destroy for " + name, t);
+ }
}
}
Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployment.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployment.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployment.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -23,8 +23,6 @@
import java.util.List;
-import javax.management.ObjectName;
-
import org.jboss.system.metadata.ServiceMetaData;
import org.w3c.dom.Element;
@@ -38,16 +36,10 @@
{
/** The deployment name */
private String name;
-
- /** The service names */
- private List<ObjectName> serviceNames;
/** The services */
private List<ServiceMetaData> services;
- /** The loader object name */
- private ObjectName loaderName;
-
/** The config */
private Element config;
@@ -72,26 +64,6 @@
}
/**
- * Get the serviceNames.
- *
- * @return the serviceNames.
- */
- public List<ObjectName> getServiceNames()
- {
- return serviceNames;
- }
-
- /**
- * Set the serviceNames.
- *
- * @param serviceNames the serviceNames.
- */
- public void setServiceNames(List<ObjectName> serviceNames)
- {
- this.serviceNames = serviceNames;
- }
-
- /**
* Get the services.
*
* @return the services.
@@ -112,26 +84,6 @@
}
/**
- * Get the loaderName.
- *
- * @return the loaderName.
- */
- public ObjectName getLoaderName()
- {
- return loaderName;
- }
-
- /**
- * Set the loaderName.
- *
- * @param loaderName the loaderName.
- */
- public void setLoaderName(ObjectName loaderName)
- {
- this.loaderName = loaderName;
- }
-
- /**
* Get the config.
*
* @return the config.
Added: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java 2006-09-15 15:10:25 UTC (rev 56886)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java 2006-09-15 15:12:03 UTC (rev 56887)
@@ -0,0 +1,117 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.system.deployers;
+
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.jboss.deployers.plugins.deployers.helpers.AbstractRealDeployer;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentUnit;
+import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.system.metadata.ServiceMetaDataParser;
+import org.w3c.dom.Element;
+
+/**
+ * ServiceDeployer.<p>
+ *
+ * This deployer is responsible for deploying services of
+ * type {@link ServiceDeployment}.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ServiceDeploymentDeployer extends AbstractRealDeployer<ServiceDeployment>
+{
+ public int getRelativeOrder()
+ {
+ return COMPONENT_DEPLOYER;
+ }
+
+ /**
+ * Create a new ServiceDeployer.
+ */
+ public ServiceDeploymentDeployer()
+ {
+ super(ServiceDeployment.class);
+ }
+
+ public void deploy(DeploymentUnit unit) throws DeploymentException
+ {
+ Set<ServiceDeployment> deployments = getAllMetaData(unit);
+ for (ServiceDeployment deployment : deployments)
+ {
+ try
+ {
+ List<ServiceMetaData> services = deployment.getServices();
+ if (services == null)
+ {
+ Element config = deployment.getConfig();
+ if (config == null)
+ {
+ log.debug("Service deployment has no services: " + deployment.getName());
+ continue;
+ }
+
+ ServiceMetaDataParser parser = new ServiceMetaDataParser(config);
+ services = parser.parse();
+ deployment.setServices(services);
+ }
+
+ if (services == null || services.isEmpty())
+ return;
+
+ for (ServiceMetaData service : services)
+ {
+ ObjectName objectName = service.getObjectName();
+ String name = objectName.getCanonicalName();
+ DeploymentUnit component = unit.addComponent(name);
+ component.addAttachment(ServiceMetaData.class.getName(), service);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + deployment.getName(), t);
+ }
+ }
+ }
+
+ public void undeploy(DeploymentUnit unit)
+ {
+ Set<ServiceDeployment> deployments = getAllMetaData(unit);
+ for (ServiceDeployment deployment : deployments)
+ {
+ List<ServiceMetaData> services = deployment.getServices();
+ if (services == null)
+ continue;
+
+ for (ServiceMetaData service : services)
+ {
+ ObjectName objectName = service.getObjectName();
+ String name = objectName.getCanonicalName();
+ unit.removeComponent(name);
+ }
+ }
+ }
+}
More information about the jboss-cvs-commits
mailing list