admin@glassfish.java.net

Extending GlassFish monitoring

From: Yamini K B <Yamini.Kb_at_Sun.COM>
Date: Thu, 11 Oct 2007 14:54:53 +0530

Hi,

(Sending this to wider audience on Siraj's suggestion)

I've modified GlassFish administration to use pluggable feature factory
to load a new monitoring manager. This monitoring manager can be used to
define custom register/unregister methods for any new monitoring objects.

SailFin monitoring support will be enabled using this feature.

Please review and let me know your comments.

Thanks & Regards,
-Yamini


? admin-core/admin/src/java/com/sun/enterprise/admin/pluggable/MonitoringManager.java
? admin-core/admin/src/java/com/sun/enterprise/admin/pluggable/MonitoringManagerImpl.java
Index: admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/DottedNameFactory.java
===================================================================
RCS file: /cvs/glassfish/admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/DottedNameFactory.java,v
retrieving revision 1.4
diff -u -r1.4 DottedNameFactory.java
--- admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/DottedNameFactory.java 5 May 2007 05:24:19 -0000 1.4
+++ admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/DottedNameFactory.java 11 Oct 2007 09:01:51 -0000
@@ -68,7 +68,7 @@
  * @author Shreedhar Ganapathy<mailto:shreedhar.ganapathy_at_sun.com>
  * @revision $Revision: 1.4 $
  */
-class DottedNameFactory {
+public final class DottedNameFactory {
     private static final Logger logger = Logger.getLogger(AdminConstants.kLoggerName);
         private static final StringManager sm = StringManager.getManager(DottedNameFactory.class);
         private static String instanceName =null;
@@ -379,4 +379,11 @@
     }
 
     // JVM1.5 related changes - END
+ public static String getDottedName(String name){
+ return getInstanceName() + DELIMITER + name;
+ }
+
+ public static String getDottedName(String name, String type){
+ return getDottedName(type) + DELIMITER + DottedName.escapePart(name);
+ }
 }
Index: admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringObjectNames.java
===================================================================
RCS file: /cvs/glassfish/admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringObjectNames.java,v
retrieving revision 1.13
diff -u -r1.13 MonitoringObjectNames.java
--- admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringObjectNames.java 5 May 2007 05:24:19 -0000 1.13
+++ admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringObjectNames.java 11 Oct 2007 09:01:51 -0000
@@ -67,7 +67,7 @@
  * @since S1AS8.0
  * @version $Revision: 1.13 $
  */
-final class MonitoringObjectNames {
+public final class MonitoringObjectNames {
         
         private static final String SERVER_ID = ApplicationServer.getServerContext().getInstanceName();
     private static final Logger logger = Logger.getLogger(AdminConstants.kLoggerName);
@@ -628,4 +628,17 @@
         return(formObjectName(t));
     }
     // JVM1.5 related changes - END
+
+ public static ObjectName getMonitoredObjectName(String type) {
+ final Hashtable t = new Hashtable();
+ t.put("type", type);
+ return ( formObjectName(t) );
+ }
+
+ public static ObjectName getMonitoredObjectName(String name, String type) {
+ final Hashtable t = new Hashtable();
+ t.put("type", type);
+ t.put("name", name);
+ return ( formObjectName(t) );
+ }
 }
Index: admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringRegistrationHelper.java
===================================================================
RCS file: /cvs/glassfish/admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringRegistrationHelper.java,v
retrieving revision 1.14
diff -u -r1.14 MonitoringRegistrationHelper.java
--- admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringRegistrationHelper.java 5 May 2007 05:24:19 -0000 1.14
+++ admin/monitor/src/java/com/sun/enterprise/admin/monitor/registry/spi/MonitoringRegistrationHelper.java 11 Oct 2007 09:01:52 -0000
@@ -68,6 +68,11 @@
 import com.sun.enterprise.admin.monitor.registry.spi.reconfig.DynamicReconfigurator;
 import com.sun.enterprise.admin.monitor.registry.spi.reconfig.MonitoringConfigChangeListener;
 import com.sun.enterprise.server.stats.JVMStatsImpl;
+
+import com.sun.enterprise.admin.server.core.AdminService;
+//import com.sun.enterprise.server.ApplicationServer;
+import com.sun.enterprise.admin.pluggable.MonitoringManager;
+
 /**
  * Enables components to register their Stats implementation for monitoring.
  * This implementation provides a way for a JSR77 Managed Component's monitoring
@@ -995,6 +1000,7 @@
         initializeJmsService();
                 initializeJndi();
                 //((StatsHolderImpl)rootStatsHolder).write();
+ initializeModuleMonitoring();
         }
         
         private void initializeRoot() {
@@ -1864,4 +1870,11 @@
     public StatsHolder getRootStatsHolder() {
         return rootStatsHolder;
     }
+
+ private void initializeModuleMonitoring() {
+ MonitoringManager mm = AdminService.getMonitoringFeature();
+// MonitoringManager mm = ApplicationServer.getServerContext().getPluggableFeatureFactory().getMonitoringManager();
+
+ mm.registerAllStats(rootStatsHolder);
+ }
 }
Index: admin-core/monitor/src/java/com/sun/enterprise/admin/monitor/registry/MonitoredObjectType.java
===================================================================
RCS file: /cvs/glassfish/admin-core/monitor/src/java/com/sun/enterprise/admin/monitor/registry/MonitoredObjectType.java,v
retrieving revision 1.4
diff -u -r1.4 MonitoredObjectType.java
--- admin-core/monitor/src/java/com/sun/enterprise/admin/monitor/registry/MonitoredObjectType.java 5 May 2007 05:25:46 -0000 1.4
+++ admin-core/monitor/src/java/com/sun/enterprise/admin/monitor/registry/MonitoredObjectType.java 11 Oct 2007 09:01:55 -0000
@@ -299,4 +299,8 @@
                 MonitoredObjectType.HTTP_SERVICE,
                 MonitoredObjectType.HTTP_LISTENER,
                 MonitoredObjectType.VIRTUAL_SERVER};
+
+ public static MonitoredObjectType newMonitoredObjectType(String name, boolean isSingleton ) {
+ return (new MonitoredObjectType(name, isSingleton));
+ }
 }
Index: appserv-core/src/java/com/sun/enterprise/admin/server/core/AdminService.java
===================================================================
RCS file: /cvs/glassfish/appserv-core/src/java/com/sun/enterprise/admin/server/core/AdminService.java,v
retrieving revision 1.31.2.1
diff -u -r1.31.2.1 AdminService.java
--- appserv-core/src/java/com/sun/enterprise/admin/server/core/AdminService.java 24 Sep 2007 06:20:47 -0000 1.31.2.1
+++ appserv-core/src/java/com/sun/enterprise/admin/server/core/AdminService.java 11 Oct 2007 09:02:14 -0000
@@ -102,6 +102,9 @@
 //web service
 import com.sun.enterprise.webservice.WsUtil;
 
+//monitoring manager
+import com.sun.enterprise.admin.pluggable.MonitoringManager;
+
 import com.sun.enterprise.admin.AdminContext;
 import com.sun.enterprise.admin.meta.MBeanRegistry;
 import com.sun.enterprise.admin.meta.MBeanRegistryFactory;
@@ -199,6 +202,7 @@
 
     private final AutoDeployStarter autoDeployStarter = new AutoDeployStarter();
     
+ private static MonitoringManager mManager = null;
 
     /**
      * private constructor. AdminService instance should be initialized
@@ -237,11 +241,15 @@
         if (ac instanceof AdminContextImpl) {
             ((AdminContextImpl)ac).setServerContext((ServerContextImpl)sc);
         }
+ mManager = sc.getPluggableFeatureFactory().getMonitoringManager();
         as.setAdminContext(ac);
         setAdminService(as);
         return as;
     }
 
+ public static MonitoringManager getMonitoringFeature() {
+ return mManager;
+ }
     /**
      * Instantiate admin service. This method verifies that specified type
      * is a known type and then creates an admin service object initialized
Index: appserv-core/src/java/com/sun/enterprise/server/pluggable/PluggableFeatureFactory.java
===================================================================
RCS file: /cvs/glassfish/appserv-core/src/java/com/sun/enterprise/server/pluggable/PluggableFeatureFactory.java,v
retrieving revision 1.8.6.1
diff -u -r1.8.6.1 PluggableFeatureFactory.java
--- appserv-core/src/java/com/sun/enterprise/server/pluggable/PluggableFeatureFactory.java 24 Sep 2007 06:24:14 -0000 1.8.6.1
+++ appserv-core/src/java/com/sun/enterprise/server/pluggable/PluggableFeatureFactory.java 11 Oct 2007 09:02:15 -0000
@@ -46,6 +46,8 @@
 import com.sun.enterprise.server.ss.ASLazyKernel;
 import com.sun.enterprise.autotxrecovery.TransactionRecovery;
 import com.sun.enterprise.diagnostics.DiagnosticAgent;
+
+import com.sun.enterprise.admin.pluggable.MonitoringManager;
 /**
  * The interface to provide access to supported Pluggable Features. The
  * various editions of the product may provide varied implementation for
@@ -162,4 +164,9 @@
      */
     public AdminExtensionFeature getAdminExtensionFeature();
 
+ /**
+ * Monitoring Extension Feature
+ */
+ public MonitoringManager getMonitoringManager();
+
 }