[jboss-cvs] JBossAS SVN: r100129 - in trunk/management/src/main/java/org/jboss/management/j2ee: deployers and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 29 11:03:54 EST 2010


Author: thomas.diesler at jboss.com
Date: 2010-01-29 11:03:53 -0500 (Fri, 29 Jan 2010)
New Revision: 100129

Modified:
   trunk/management/src/main/java/org/jboss/management/j2ee/ServiceModule.java
   trunk/management/src/main/java/org/jboss/management/j2ee/WebModule.java
   trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractJSR77Deployer.java
   trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractVFSJSR77Deployer.java
   trunk/management/src/main/java/org/jboss/management/j2ee/deployers/ServiceModuleJSR77Deployer.java
   trunk/management/src/main/java/org/jboss/management/j2ee/deployers/WebModuleJSR77Deployer.java
Log:
Prevent NPEs when J2EEServer MBean is not registered

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/ServiceModule.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/ServiceModule.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/ServiceModule.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -62,6 +62,10 @@
       ObjectName jsr77Name = null;
       ObjectName j2eeServerName = J2EEDomain.getDomainServerName(mbeanServer);
       
+      // Cannot create the module if the J2EEServer MBean is not registered  
+      if (j2eeServerName == null)
+         return null;
+      
       // First get the deployement descriptor
       if (url != null && url.getFile().endsWith(".xml"))
       {

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/WebModule.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/WebModule.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/WebModule.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -42,12 +42,10 @@
  * @author  <a href="mailto:thomas.diesler at jboss.org">Thomas Diesler</a>
  * @version $Revision$
  */
-public class WebModule extends J2EEModule
-   implements WebModuleMBean
+public class WebModule extends J2EEModule implements WebModuleMBean
 {
 
-   private static final String[] eventTypes = {NotificationConstants.OBJECT_CREATED,
-                                               NotificationConstants.OBJECT_DELETED};
+   private static final String[] eventTypes = { NotificationConstants.OBJECT_CREATED, NotificationConstants.OBJECT_DELETED };
 
    // Attributes ----------------------------------------------------
    private static Logger log = Logger.getLogger(WebModule.class);
@@ -76,26 +74,25 @@
     * @param pURL             URL path to the local deployment of the module (where to find the DD file)
     * @param webContainerName the JBoss web container mbean name
     */
-   public static ObjectName create(MBeanServer mbeanServer,
-                                   String earName,
-                                   String warName,
-                                   URL pURL,
-                                   ObjectName webContainerName)
+   public static ObjectName create(MBeanServer mbeanServer, String earName, String warName, URL pURL, ObjectName webContainerName)
    {
       String webXml = null;
       String jbossWebXml = null;
       ObjectName jsr77ParentName = null;
       ObjectName lCreated = null;
       ObjectName j2eeServerName = J2EEDomain.getDomainServerName(mbeanServer);
+      
+      // Cannot create the module if the J2EEServer MBean is not registered  
+      if (j2eeServerName == null)
+         return null;
+      
       ObjectName jsr77Name = null;
       try
       {
          // Get the J2EEServer name
          Hashtable props = j2eeServerName.getKeyPropertyList();
-         String j2eeServer = props.get(J2EEManagedObject.TYPE) + "=" +
-                 props.get("name");
+         String j2eeServer = props.get(J2EEManagedObject.TYPE) + "=" + props.get("name");
 
-
          if (earName == null)
          {
             // If there is no ear use the J2EEServer as the parent
@@ -104,31 +101,25 @@
          else
          {
             // Query for the J2EEApplication matching earName
-            ObjectName lApplicationQuery = new ObjectName(J2EEDomain.getDomainName() + ":" +
-                    J2EEManagedObject.TYPE + "=" + J2EETypeConstants.J2EEApplication + "," +
-                    "name=" + earName + "," +
-                    j2eeServer + "," +
-                    "*");
+            ObjectName lApplicationQuery = new ObjectName(J2EEDomain.getDomainName() + ":" + J2EEManagedObject.TYPE + "=" + J2EETypeConstants.J2EEApplication + ","
+                  + "name=" + earName + "," + j2eeServer + "," + "*");
             Set lApplications = mbeanServer.queryNames(lApplicationQuery, null);
 
             if (lApplications.isEmpty())
             {
-               lCreated = J2EEApplication.create(mbeanServer,
-                       earName,
-                       null);
+               lCreated = J2EEApplication.create(mbeanServer, earName, null);
                jsr77ParentName = lCreated;
             } // end of if ()
             else if (lApplications.size() == 1)
             {
-               jsr77ParentName = (ObjectName) lApplications.iterator().next();
+               jsr77ParentName = (ObjectName)lApplications.iterator().next();
             } // end of if ()
          }
 
          // Get the J2EE deployement descriptor
          webXml = J2EEDeployedObject.getDeploymentDescriptor(pURL, J2EEDeployedObject.WEB);
          // Get the JBoss Web deployement descriptor
-         jbossWebXml = J2EEDeployedObject.getDeploymentDescriptor(pURL,
-            J2EEDeployedObject.JBOSS_WEB);
+         jbossWebXml = J2EEDeployedObject.getDeploymentDescriptor(pURL, J2EEDeployedObject.JBOSS_WEB);
       }
       catch (Exception e)
       {
@@ -139,11 +130,9 @@
       try
       {
          // Get JVM of the j2eeServer
-         String[] jvms = (String[]) mbeanServer.getAttribute(j2eeServerName,
-                 "javaVMs");
+         String[] jvms = (String[])mbeanServer.getAttribute(j2eeServerName, "javaVMs");
 
-         WebModule webModule = new WebModule(warName, jsr77ParentName, jvms, webXml,
-                 webContainerName, jbossWebXml);
+         WebModule webModule = new WebModule(warName, jsr77ParentName, jvms, webXml, webContainerName, jbossWebXml);
          jsr77Name = webModule.getObjectName();
          mbeanServer.registerMBean(webModule, jsr77Name);
          //remember if we created our parent, if we did we have to kill it on destroy.
@@ -173,7 +162,7 @@
       {
          mbeanServer.unregisterMBean(jsr77Name);
          log.debug("Remove JSR-77 WebModule: " + jsr77Name);
-         ObjectName jsr77ParentName = (ObjectName) fakeJ2EEApps.get(jsr77Name);
+         ObjectName jsr77ParentName = (ObjectName)fakeJ2EEApps.get(jsr77Name);
          if (jsr77ParentName != null)
          {
             log.debug("Remove fake JSR-77 parent Application: " + jsr77ParentName);
@@ -198,10 +187,8 @@
     * @param webContainerName the JBoss web container service name for the war
     * @param jbossWebDD       the jboss-web.xml descriptor text
     */
-   public WebModule(String warName, ObjectName j2eeAppName, String[] jvms,
-                    String webDD, ObjectName webContainerName, String jbossWebDD)
-           throws MalformedObjectNameException,
-           InvalidParentException
+   public WebModule(String warName, ObjectName j2eeAppName, String[] jvms, String webDD, ObjectName webContainerName, String jbossWebDD)
+         throws MalformedObjectNameException, InvalidParentException
    {
       super(J2EETypeConstants.WebModule, warName, j2eeAppName, jvms, webDD);
       this.jbossWebDD = (jbossWebDD == null ? "" : jbossWebDD);
@@ -228,7 +215,7 @@
    {
       if (pIndex >= 0 && pIndex < servletNames.size())
       {
-         return (String) servletNames.get(pIndex);
+         return (String)servletNames.get(pIndex);
       }
       else
       {
@@ -249,8 +236,7 @@
    public void addChild(ObjectName pChild)
    {
       String lType = J2EEManagedObject.getType(pChild);
-      if (J2EETypeConstants.Servlet.equals(lType)
-      )
+      if (J2EETypeConstants.Servlet.equals(lType))
       {
          servletNames.add(pChild.getCanonicalName());
       }
@@ -296,10 +282,7 @@
 
    public String toString()
    {
-      return "WebModule[ " + super.toString() +
-              ", Servlets: " + servletNames +
-              ", JBoss-Web-DD: " + jbossWebDD +
-              " ]";
+      return "WebModule[ " + super.toString() + ", Servlets: " + servletNames + ", JBoss-Web-DD: " + jbossWebDD + " ]";
    }
 
    // Package protected ---------------------------------------------
@@ -314,8 +297,8 @@
    {
       Hashtable parentKeys = new Hashtable();
       Hashtable parentProps = jsr77ParentName.getKeyPropertyList();
-      String parentName = (String) parentProps.get("name");
-      String j2eeType = (String) parentProps.get(J2EEManagedObject.TYPE);
+      String parentName = (String)parentProps.get("name");
+      String j2eeType = (String)parentProps.get(J2EEManagedObject.TYPE);
 
       // Check if parent is a J2EEServer or J2EEApplication
       if (j2eeType.equals(J2EETypeConstants.J2EEApplication) == false)
@@ -328,7 +311,7 @@
       {
          // J2EEApplication
          parentKeys.put(J2EETypeConstants.J2EEApplication, parentName);
-         String j2eeServerName = (String) parentProps.get(J2EETypeConstants.J2EEServer);
+         String j2eeServerName = (String)parentProps.get(J2EETypeConstants.J2EEServer);
          parentKeys.put(J2EETypeConstants.J2EEServer, j2eeServerName);
       }
 
@@ -340,4 +323,3 @@
    // Inner classes -------------------------------------------------
 
 }
-

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractJSR77Deployer.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractJSR77Deployer.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractJSR77Deployer.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -34,6 +34,8 @@
 /**
  * Abstract jsr77 deployer.
  *
+ * [TODO] Add meaningful javadoc. What is this supposed to do?
+ * 
  * @param <T> exact input type
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractVFSJSR77Deployer.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractVFSJSR77Deployer.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/deployers/AbstractVFSJSR77Deployer.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -29,6 +29,8 @@
 /**
  * Abstract vfs jsr77 deployer.
  *
+ * [TODO] Add meaningful javadoc. What is this supposed to do?
+ * 
  * @param <T> exact input type
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/deployers/ServiceModuleJSR77Deployer.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/deployers/ServiceModuleJSR77Deployer.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/deployers/ServiceModuleJSR77Deployer.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -35,6 +35,8 @@
 /**
  * Service module jsr77 deployer.
  * 
+ * [TODO] Add meaningful javadoc. What is this supposed to do?
+ * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
 public class ServiceModuleJSR77Deployer extends AbstractVFSJSR77Deployer<ServiceDeployment>
@@ -50,17 +52,17 @@
       if (sarName != null)
       {
          log.debug("Created ServiceModule: " + sarName);
-      }
 
-      List<ServiceMetaData> beans = metaData.getServices();
-      if (beans != null && beans.isEmpty() == false)
-      {
-         for (ServiceMetaData bean : beans)
+         List<ServiceMetaData> beans = metaData.getServices();
+         if (beans != null && beans.isEmpty() == false)
          {
-            ObjectName mbeanName = bean.getObjectName();
-            // Create JSR-77 MBean
-            MBean.create(server, sarName.toString(), mbeanName);
-            log.debug("Create MBean, name: " + mbeanName + ", SAR Module: " + sarName);
+            for (ServiceMetaData bean : beans)
+            {
+               ObjectName mbeanName = bean.getObjectName();
+               // Create JSR-77 MBean
+               MBean.create(server, sarName.toString(), mbeanName);
+               log.debug("Create MBean, name: " + mbeanName + ", SAR Module: " + sarName);
+            }
          }
       }
    }
@@ -71,7 +73,7 @@
       if (beans != null && beans.isEmpty() == false)
       {
          ListIterator<ServiceMetaData> iter = beans.listIterator(beans.size());
-         while(iter.hasPrevious())
+         while (iter.hasPrevious())
          {
             ObjectName name = iter.previous().getObjectName();
             try

Modified: trunk/management/src/main/java/org/jboss/management/j2ee/deployers/WebModuleJSR77Deployer.java
===================================================================
--- trunk/management/src/main/java/org/jboss/management/j2ee/deployers/WebModuleJSR77Deployer.java	2010-01-29 15:51:31 UTC (rev 100128)
+++ trunk/management/src/main/java/org/jboss/management/j2ee/deployers/WebModuleJSR77Deployer.java	2010-01-29 16:03:53 UTC (rev 100129)
@@ -48,40 +48,43 @@
       ObjectName webModuleService = extractRootObjectName(server, unit, metaData); // TODO
       String earName = FactoryUtils.findEarParent(unit);
       ObjectName jsr77Name = WebModule.create(server, earName, warName, unit.getRoot().toURL(), webModuleService);
-      putObjectName(unit, WebModule.class.getName(), jsr77Name);
-      Iterable<ObjectName> servlets = extractComponentObjectNames(server, unit, metaData); // TODO
-      for (ObjectName servletName : servlets)
+      if (jsr77Name != null)
       {
-         try
+         putObjectName(unit, WebModule.class.getName(), jsr77Name);
+         Iterable<ObjectName> servlets = extractComponentObjectNames(server, unit, metaData); // TODO
+         for (ObjectName servletName : servlets)
          {
-            createServlet(server, unit, jsr77Name, servletName);
+            try
+            {
+               createServlet(server, unit, jsr77Name, servletName);
+            }
+            catch (Throwable e)
+            {
+               log.debug("Failed to create JSR-77 servlet: " + servletName, e);
+            }
          }
-         catch (Throwable e)
-         {
-            log.debug("Failed to create JSR-77 servlet: " + servletName, e);
-         }
       }
    }
 
    protected void undeployJsr77(MBeanServer server, VFSDeploymentUnit unit, JBossWebMetaData metaData)
    {
       ObjectName jsr77Name = removeObjectName(unit, WebModule.class.getName());
-      log.debug("Destroy module: " + jsr77Name);
-      Iterable<ObjectName> servlets = extractComponentObjectNames(server, unit, metaData); // TODO
-      for (ObjectName servletName : servlets)
+      if (jsr77Name != null)
       {
-         try
+         log.debug("Destroy module: " + jsr77Name);
+         Iterable<ObjectName> servlets = extractComponentObjectNames(server, unit, metaData); // TODO
+         for (ObjectName servletName : servlets)
          {
-            destroyServlet(server, unit, servletName);
+            try
+            {
+               destroyServlet(server, unit, servletName);
+            }
+            catch (Throwable e)
+            {
+               log.debug("Failed to destroy JSR-77 servlet: " + servletName, e);
+            }
          }
-         catch (Throwable e)
-         {
-            log.debug("Failed to destroy JSR-77 servlet: " + servletName, e);
-         }
-      }
 
-      if (jsr77Name != null)
-      {
          WebModule.destroy(server, jsr77Name);
       }
    }




More information about the jboss-cvs-commits mailing list