[jboss-cvs] JBossAS SVN: r65075 - in trunk: profileservice/src/resources and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 5 01:51:41 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-09-05 01:51:40 -0400 (Wed, 05 Sep 2007)
New Revision: 65075

Modified:
   trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
   trunk/profileservice/src/resources/profileservice-beans.xml
   trunk/server/src/etc/conf/default/bootstrap-repo-beans.xml
   trunk/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java
   trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java
   trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeployment.java
   trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeploymentClassPath.java
   trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceMetaData.java
Log:
JBAS-4672, begin supporting service deployment managed objects

Modified: trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
===================================================================
--- trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -285,7 +285,8 @@
             if (etype == AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE)
             {
                ArrayValue<GenericValue> avalue = (ArrayValue<GenericValue>) prop.getValue();
-               for(int n = 0; n < avalue.getLength(); n ++)
+               int length = avalue != null ? avalue.getLength() : 0;
+               for(int n = 0; n < length; n ++)
                {
                   GenericValue gv = (GenericValue) avalue.getValue(n);
                   ManagedObject propMO = (ManagedObject) gv.getValue();


Property changes on: trunk/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
___________________________________________________________________
Name: svn:keywords
   + Revision Id

Modified: trunk/profileservice/src/resources/profileservice-beans.xml
===================================================================
--- trunk/profileservice/src/resources/profileservice-beans.xml	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/profileservice/src/resources/profileservice-beans.xml	2007-09-05 05:51:40 UTC (rev 65075)
@@ -47,111 +47,11 @@
         <property name="mainDeployer"><inject bean="MainDeployer"/></property>
         <property name="profileService"><inject bean="ProfileService"/></property>
         <property name="serializer"><inject bean="JavaSerializationAttachmentsSerializer"/></property>
+        <!-- Accept any implementor of DeploymentTemplate -->
+        <incallback method="addTemplate"/>
+        <uncallback method="removeTemplate"/>
     </bean>
-    
-    <!-- Mock ConnectionFactory Deployment -->
-    <bean name="FakeDataSourceDeployer"
-        class="org.jboss.profileservice.mock.ds.FakeDataSourceDeployer">
-        <property name="type">jca-ds</property>
-        <property name="propertyNameMappings">
-            <inject bean="DsPropertyMappings" />
-        </property>
-    </bean>
-    
-    <!-- DeploymentTemplates -->
-    <!--
-    <bean name="DsXmlDataSourceTemplate"
-        class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplate">
-        <install bean="ManagementView" method="addTemplate">
-            <parameter>
-                <this/>
-            </parameter>
-        </install>
-        <uninstall bean="ManagementView" method="removeTemplate">
-            <parameter>
-                <this/>
-            </parameter>
-        </uninstall>
-        <property name="info"><inject bean="DsXmlDataSourceTemplateInfo"/></property>
-    </bean>
-    -->
-    <bean name="FakeDsXmlDataSourceTemplate"
-        class="org.jboss.profileservice.management.templates.FakeDsXmlDataSourceTemplate">
-        <install bean="ManagementView" method="addTemplate">
-            <parameter>
-                <this/>
-            </parameter>
-        </install>
-        <uninstall bean="ManagementView" method="removeTemplate">
-            <parameter>
-                <this/>
-            </parameter>
-        </uninstall>
-        <property name="info"><inject bean="FakeDsXmlDataSourceTemplateInfo"/></property>
-        <property name="deployer"><inject bean="FakeDataSourceDeployer" /></property>
-    </bean>
-    
-    <bean name="FakeDsXmlDataSourceTemplateInfo"
-        class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
-        <constructor>
-            <parameter>FakeDsXmlDataSourceTemplate</parameter>
-            <parameter>A template for *-dsf.xml deployments</parameter>
-            <parameter>org.jboss.system.metadata.ServiceMetaData</parameter>
-            <parameter>FakeConnectionFactoryDeployer.datasource-type</parameter>
-        </constructor>
-        <!-- Specify a mapping from service attribute names used by the datasource
-            deployment ServiceMetaData to ManagedProperty names. 
-        -->
-        <property name="propertyNameMappings">
-            <inject bean="DsPropertyMappings" />
-        </property>
-    </bean>
-    <!-- 
-    <bean name="DsXmlDataSourceTemplateInfo"
-        class="org.jboss.profileservice.management.templates.DsXmlDataSourceTemplateInfo">
-        <constructor>
-            <parameter>DsXmlDataSourceTemplate</parameter>
-            <parameter>A template for *-ds.xml deployments</parameter>
-            <parameter>org.w3c.dom.Document</parameter>
-        </constructor>
-        <!- - Specify a mapping from service attribute names used by the datasource
-            deployment ServiceMetaData to ManagedProperty names. 
-        - ->
-        <property name="propertyNameMappings">
-            <inject bean="DsPropertyMappings" />
-        </property>
-    </bean>
-    -->
-    <bean name="DsPropertyMappings" class="java.util.HashMap">
-        <constructor>
-            <map class="java.util.HashMap" keyClass="java.lang.String" valueClass="java.lang.String">
-                <entry><key>jndi-name</key><value>JndiName</value></entry>
-                <entry><key>connection-url</key><value>JdbcURL</value></entry>
-                <entry><key>user-name</key><value>Username</value></entry>
-                <entry><key>password</key><value>Password</value></entry>
-                <entry><key>driver-class</key><value>DriverClass</value></entry>
-                <entry><key>min-pool-size</key><value>MinPoolSize</value></entry>
-                <entry><key>max-pool-size</key><value>MaxPoolSize</value></entry>
-                <entry><key>security-domain</key><value>SecurityDomain</value></entry>
-                <entry><key>connection-properties</key><value>ConnectionProperties</value></entry>
-            </map>
-        </constructor>
-    </bean>
-    
-    <!-- Override the ConnectionFactoryDeployer ManagedObjectBuilder
-    <bean name="ConnectionFactoryDeployerManagedObjectBuilder"
-        class="org.jboss.profileservice.management.builders.ConnectionFactoryDeployerManagedObjectBuilder">
-        <install bean="MainDeployer" method="setDeployerManagedObjectBuilder">
-            <parameter>
-                <inject bean="ConnectionFactoryDeployer" />
-            </parameter>
-            <parameter>
-                <this/>
-            </parameter>
-        </install>
-    </bean>
-    -->
-    
+
     <bean name="ProfileServiceProxyFactory" class="org.jboss.profileservice.remoting.ProxyFactory">
         <property name="dispatchName">ProfileService</property>
         <property name="jndiName">ProfileService</property>

Modified: trunk/server/src/etc/conf/default/bootstrap-repo-beans.xml
===================================================================
--- trunk/server/src/etc/conf/default/bootstrap-repo-beans.xml	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/server/src/etc/conf/default/bootstrap-repo-beans.xml	2007-09-05 05:51:40 UTC (rev 65075)
@@ -266,8 +266,12 @@
    </bean>
 
    <!-- JMX Deployment -->
+   <bean name="ServiceMetaDataICF" class="org.jboss.system.deployers.managed.ServiceMetaDataICF">
+      <property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
+   </bean>
    <bean name="SARDeployer" class="org.jboss.system.deployers.SARDeployer">
       <property name="type">sar</property>
+      <property name="icf"><inject bean="ServiceMetaDataICF"/></property>
    </bean>
    <bean name="ServiceDeploymentDeployer" class="org.jboss.system.deployers.ServiceDeploymentDeployer">
        <property name="type">sar</property>

Modified: trunk/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/system-jmx/src/main/org/jboss/system/deployers/SARDeployer.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -28,10 +28,13 @@
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.vfs.spi.deployer.JAXPDeployer;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.managed.api.factory.ManagedObjectFactory;
 import org.jboss.mx.loading.LoaderRepositoryFactory.LoaderRepositoryConfig;
+import org.jboss.system.deployers.managed.ServiceMetaDataICF;
 import org.jboss.system.metadata.ServiceDeployment;
 import org.jboss.system.metadata.ServiceDeploymentClassPath;
 import org.jboss.system.metadata.ServiceDeploymentParser;
+import org.jboss.system.metadata.ServiceMetaData;
 import org.jboss.system.server.ServerConfig;
 import org.jboss.system.server.ServerConfigLocator;
 import org.jboss.virtual.VFS;
@@ -51,6 +54,8 @@
  */
 public class SARDeployer extends JAXPDeployer<ServiceDeployment>
 {
+   private ServiceMetaDataICF icf;
+
    /**
     * Create a new SARDeployer.
     * 
@@ -60,8 +65,26 @@
    {
       super(ServiceDeployment.class);
       setSuffix("-service.xml");
+      // Enable the super class ManagedObjectCreator implementation
+      setBuildManagedObject(true);
    }
 
+   public ServiceMetaDataICF getIcf()
+   {
+      return icf;
+   }
+
+   public void setIcf(ServiceMetaDataICF icf)
+   {
+      this.icf = icf;
+      if (icf != null)
+      {
+         // Have the ServiceMetaData ManagedObject build from the code class
+         ManagedObjectFactory mof = ManagedObjectFactory.getInstance();
+         mof.setInstanceClassFactory(ServiceMetaData.class, icf);
+      }
+   }
+
    /**
     * @param unit - the deployment unit
     * @param file - the vf for the jboss-service.xml descriptor

Modified: trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -23,6 +23,9 @@
 
 import java.io.Serializable;
 
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanServer;
+
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.managed.api.ManagedProperty;
@@ -41,16 +44,33 @@
 public class ServiceMetaDataICF
    implements InstanceClassFactory
 {
+   private MBeanServer mbeanServer;
    /** The meta value factory */
    private MetaValueFactory metaValueFactory = MetaValueFactory.getInstance(); 
 
+   public MBeanServer getMbeanServer()
+   {
+      return mbeanServer;
+   }
+   public void setMbeanServer(MBeanServer mbeanServer)
+   {
+      this.mbeanServer = mbeanServer;
+   }
+
    public Class<? extends Serializable> getManagedObjectClass(Serializable instance)
       throws ClassNotFoundException
    {
       ServiceMetaData md = (ServiceMetaData) instance;
-      ClassLoader loader = instance.getClass().getClassLoader();
-      Class moClass = loader.loadClass(md.getCode());
-      return moClass;
+      try
+      {
+         ClassLoader loader = mbeanServer.getClassLoader(md.getClassLoaderName());
+         Class moClass = loader.loadClass(md.getCode());
+         return moClass;
+      }
+      catch(InstanceNotFoundException e)
+      {
+         throw new ClassNotFoundException("Failed to obtain mbean class loader", e);
+      }
    }
    public MetaValue getValue(BeanInfo beanInfo, ManagedProperty property, Serializable instance)
    {

Modified: trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeployment.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeployment.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeployment.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -24,6 +24,8 @@
 import java.io.Serializable;
 import java.util.List;
 
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperty;
 import org.jboss.mx.loading.LoaderRepositoryFactory.LoaderRepositoryConfig;
 import org.w3c.dom.Element;
 
@@ -31,8 +33,10 @@
  * ServiceDeployment.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision: 1.1 $
+ * @author Scott.Stark at jboss.org
+ * @version $Revision$
  */
+ at ManagementObject
 public class ServiceDeployment
    implements Serializable
 {
@@ -58,6 +62,7 @@
     * 
     * @return the name.
     */
+   @ManagementProperty(description="The -service.xml url string")
    public String getName()
    {
       return name;
@@ -78,6 +83,7 @@
     * 
     * @return the services.
     */
+   @ManagementProperty(description="The mbeans", managed=true)
    public List<ServiceMetaData> getServices()
    {
       return services;
@@ -98,6 +104,7 @@
     * 
     * @return the config.
     */
+   @ManagementProperty(ignored=true)
    public Element getConfig()
    {
       return config;
@@ -118,6 +125,7 @@
     * 
     * @return the loaderRepositoryConfig.
     */
+   @ManagementProperty(ignored=true)
    public LoaderRepositoryConfig getLoaderRepositoryConfig()
    {
       return loaderRepositoryConfig;
@@ -138,6 +146,7 @@
     * 
     * @return the classPaths.
     */
+   @ManagementProperty(name="classpath", description="The deployment classpath", managed=true)
    public List<ServiceDeploymentClassPath> getClassPaths()
    {
       return classPaths;


Property changes on: trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeployment.java
___________________________________________________________________
Name: svn:keywords
   + Revision Id

Modified: trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeploymentClassPath.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeploymentClassPath.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceDeploymentClassPath.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -23,12 +23,15 @@
 
 import java.io.Serializable;
 
+import org.jboss.managed.api.annotation.ManagementObject;
+
 /**
  * ServiceDeploymentClassPath.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
+ at ManagementObject
 public class ServiceDeploymentClassPath
    implements Serializable
 {

Modified: trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceMetaData.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceMetaData.java	2007-09-05 05:49:55 UTC (rev 65074)
+++ trunk/system-jmx/src/main/org/jboss/system/metadata/ServiceMetaData.java	2007-09-05 05:51:40 UTC (rev 65075)
@@ -29,6 +29,9 @@
 import javax.management.ObjectName;
 
 import org.jboss.dependency.spi.ControllerMode;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementProperty;
 import org.w3c.dom.Element;
 
 /**
@@ -37,6 +40,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
+ at ManagementObject
 public class ServiceMetaData extends AbstractMetaDataVisitorNode
    implements Serializable
 {
@@ -87,6 +91,8 @@
     * 
     * @return the objectName.
     */
+   @ManagementProperty(description="The service JMX object name")
+   @ManagementObjectID(type="ServiceMBean")
    public ObjectName getObjectName()
    {
       return objectName;
@@ -109,6 +115,7 @@
     * 
     * @return the code.
     */
+   @ManagementProperty(description="The service bean class")
    public String getCode()
    {
       return code;




More information about the jboss-cvs-commits mailing list