You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ec...@apache.org on 2008/01/08 23:02:56 UTC

svn commit: r610192 - in /geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring: MasterRemoteControl.java snapshot/SnapshotDBHelper.java snapshot/SnapshotProcessor.java

Author: ecraig
Date: Tue Jan  8 14:02:53 2008
New Revision: 610192

URL: http://svn.apache.org/viewvc?rev=610192&view=rev
Log:
GERONIMO-3739
 SnapshotDBHelper in the monitoring agent should not have static methods

Patch by Viet Nguyen

Modified:
    geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/MasterRemoteControl.java
    geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotDBHelper.java
    geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotProcessor.java

Modified: geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/MasterRemoteControl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/MasterRemoteControl.java?rev=610192&r1=610191&r2=610192&view=diff
==============================================================================
--- geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/MasterRemoteControl.java (original)
+++ geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/MasterRemoteControl.java Tue Jan  8 14:02:53 2008
@@ -82,7 +82,7 @@
     
     // credentials for snapshot processor
     private static String username = null;
-    private static String password = null;;
+    private static String password = null;
     private static int port = -1;
 
     // inject Data Sources
@@ -91,32 +91,17 @@
     
     // inject a TimerService
     @Resource private TimerService timer;
+    
+    private SnapshotDBHelper snapshotDBHelper;
 
     public MasterRemoteControl() {
-        
     }
 
     @PostConstruct
     private void init() {
-        // retrieve the mbean server
-        ArrayList mbServerList = MBeanServerFactory.findMBeanServer(null);
-        if(mbServerList.size() >= 1) {
-            mbServer = (MBeanServer) mbServerList.get(0);
-            for(int i = 0; i < mbServerList.size(); i++) {
-                String domain = ((MBeanServer)mbServerList.get(i)).getDefaultDomain();
-                if(domain.equals(GERONIMO_DEFAULT_DOMAIN)) {
-                    mbServer = (MBeanServer)mbServerList.get(i);
-                    break;
-                }
-            }
-        }
-        // ensure that the mbServer has something in it
-        if(mbServer == null) {
-            mbServer = MBeanServerFactory.createMBeanServer(GERONIMO_DEFAULT_DOMAIN);
-        }
-        
         // set up SnaphotDBHelper with the necessary data sources
-        SnapshotDBHelper.setDataSources(activeDS, archiveDS);
+        // Note: do not put this in the constructor...datasources are not injected by then
+        snapshotDBHelper = new SnapshotDBHelper(activeDS, archiveDS);
     }
 
     /**
@@ -296,7 +281,7 @@
     @RolesAllowed("mejbuser")
     public ArrayList<HashMap<String, HashMap<String, Object>>> fetchSnapshotData(Integer numberOfSnapshot, Integer everyNthSnapshot) {
         ArrayList<HashMap<String, HashMap<String, Object>>> retval = 
-            (ArrayList<HashMap<String, HashMap<String, Object>>>)org.apache.geronimo.monitoring.snapshot.SnapshotDBHelper.fetchData(numberOfSnapshot, everyNthSnapshot);
+            (ArrayList<HashMap<String, HashMap<String, Object>>>)snapshotDBHelper.fetchData(numberOfSnapshot, everyNthSnapshot);
         return retval;
     }
     
@@ -310,7 +295,7 @@
     @RolesAllowed("mejbuser")
     public HashMap<String, HashMap<String, Long>> fetchMaxSnapshotData(Integer numberOfSnapshot) {
         HashMap<String, HashMap<String, Long>> retval = 
-            (HashMap<String, HashMap<String, Long>>)org.apache.geronimo.monitoring.snapshot.SnapshotDBHelper.fetchMaxSnapshotData(numberOfSnapshot);
+            (HashMap<String, HashMap<String, Long>>)snapshotDBHelper.fetchMaxSnapshotData(numberOfSnapshot);
         return retval;
     }
 
@@ -324,7 +309,7 @@
     @RolesAllowed("mejbuser")
     public HashMap<String, HashMap<String, Long>> fetchMinSnapshotData(Integer numberOfSnapshot) {
         HashMap<String, HashMap<String, Long>> retval = 
-            (HashMap<String, HashMap<String, Long>>)org.apache.geronimo.monitoring.snapshot.SnapshotDBHelper.fetchMinSnapshotData(numberOfSnapshot);
+            (HashMap<String, HashMap<String, Long>>)snapshotDBHelper.fetchMinSnapshotData(numberOfSnapshot);
         return retval;
     }
     
@@ -373,7 +358,7 @@
     
     @RolesAllowed("mejbuser")
     public Long getSnapshotCount() {
-        return org.apache.geronimo.monitoring.snapshot.SnapshotDBHelper.getSnapshotCount();
+        return snapshotDBHelper.getSnapshotCount();
     }
     
     /**
@@ -517,7 +502,7 @@
                                                         int numberOfSnapshots, 
                                                         int everyNthSnapshot,
                                                         boolean showArchived) {
-        return SnapshotDBHelper.getSpecificStatistics(mbeanName, statsName, numberOfSnapshots, everyNthSnapshot, showArchived);
+        return snapshotDBHelper.getSpecificStatistics(mbeanName, statsName, numberOfSnapshots, everyNthSnapshot, showArchived);
     }
     
     /**

Modified: geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotDBHelper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotDBHelper.java?rev=610192&r1=610191&r2=610192&view=diff
==============================================================================
--- geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotDBHelper.java (original)
+++ geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotDBHelper.java Tue Jan  8 14:02:53 2008
@@ -46,10 +46,19 @@
     private static DataSource activeDS = null;
     private static DataSource archiveDS = null;
     
+    public SnapshotDBHelper() {
+        
+    }
+    
+    public SnapshotDBHelper(DataSource activeDS, DataSource archiveDS) {
+        SnapshotDBHelper.activeDS = activeDS;
+        SnapshotDBHelper.archiveDS = archiveDS;
+    }
+    
     /**
      * @return A map: mbeanName --> ArrayList of statistic attributes for that mbean
      */
-    public static HashMap<String, ArrayList<String>> getAllSnapshotStatAttributes() {
+    public HashMap<String, ArrayList<String>> getAllSnapshotStatAttributes() {
         openActiveConnection();
         HashMap<String, ArrayList<String>> retval = new HashMap<String, ArrayList<String>>();
         try {
@@ -80,7 +89,7 @@
      * 
      * @return The number of snapshots present in the active database
      */
-    public static Long getSnapshotCount() {
+    public Long getSnapshotCount() {
         long retval = 0;
         try {
             openActiveConnection();
@@ -101,14 +110,14 @@
      * @param numberOfSnapshots - the number of latest snapshots to look at
      * @return A hashmap which maps an mbean --> a hashmap with an attribute name and its value . All values will be the max.
      */
-    public static HashMap<String, HashMap<String, Long>> fetchMaxSnapshotData(Integer numberOfSnapshots) {
+    public HashMap<String, HashMap<String, Long>> fetchMaxSnapshotData(Integer numberOfSnapshots) {
         return fetchMaxOrMinSnapshotData(numberOfSnapshots, true);
     }
     /**
      * @param numberOfSnapshots - the number of latest snapshots to look at
      * @return A hashmap which maps an mbean --> a hashmap with an attribute name and its value . All values will be the min.
      */    
-    public static HashMap<String, HashMap<String, Long>> fetchMinSnapshotData(Integer numberOfSnapshots) {
+    public HashMap<String, HashMap<String, Long>> fetchMinSnapshotData(Integer numberOfSnapshots) {
         return fetchMaxOrMinSnapshotData(numberOfSnapshots, false);
     }
     
@@ -118,7 +127,7 @@
      * @return A hashmap which maps an mbean --> a hashmap with an attribute name and its value . All values will be the min
      * or max, depending on the isMax parameter.
      */
-    private static HashMap<String, HashMap<String, Long>> fetchMaxOrMinSnapshotData(Integer numberOfSnapshots, boolean isMax) {
+    private HashMap<String, HashMap<String, Long>> fetchMaxOrMinSnapshotData(Integer numberOfSnapshots, boolean isMax) {
         openActiveConnection();
         ResultSet snapshotTimeTable = fetchSnapshotTimesFromDB();
         HashMap<String, HashMap<String, Long>> stats = new HashMap<String, HashMap<String, Long>>();
@@ -185,7 +194,7 @@
      * @return Returns a boolean if the snapshot statistics were successfully added
      * to the DB.
      */
-    public static boolean addSnapshotToDB(HashMap<String, HashMap<String, Long>> aggregateStats) {
+    public boolean addSnapshotToDB(HashMap<String, HashMap<String, Long>> aggregateStats) {
         boolean success = true;
         // get the current time from 1970
         String currTime = "";
@@ -252,7 +261,7 @@
      * are those whose snapshot_times exceed the retention period
      * @param cutOffTime - in milliseconds
      */
-    private static void archiveSnapshots(long cutOffTime) {
+    private void archiveSnapshots(long cutOffTime) {
         // for each successful update of Snapshots/Statistics table
         // increment or decrement these counters to ensure that nothing is being 
         // lost in between. If these counters are non-zero, some records have been
@@ -332,7 +341,7 @@
      * @param cutOffTime
      * @return An SQL table contain a column of all the times that did not make the cutOffTime.
      */
-    private static ResultSet getOverDueSnapshotTimes(long cutOffTime) {
+    private ResultSet getOverDueSnapshotTimes(long cutOffTime) {
         try {
             Statement stmt = conn.createStatement();
             String query = "SELECT DISTINCT snapshot_time FROM Statistics WHERE snapshot_time < " + cutOffTime;
@@ -347,7 +356,7 @@
      * @param mbean
      * @return The mbean id of the mbean from table ArchiveDB.MBean. Returns -1 if record does not exist.
      */
-    private static int getMBeanIdFromArchive(String mbean) throws Exception {
+    private int getMBeanIdFromArchive(String mbean) throws Exception {
         int retval = -1;
         Connection archiveConn = archiveDS.getConnection();
         Statement stmt = archiveConn.createStatement();
@@ -364,7 +373,7 @@
      * @param mbean
      * @return The mbean id of the mbean from table ActiveDB.MBean. Returns -1 if record does not exist.
      */
-    private static int getMBeanId(String mbean) throws Exception {
+    private int getMBeanId(String mbean) throws Exception {
         int retval = -1;
         Connection conn = activeDS.getConnection();
         Statement stmt = conn.createStatement();
@@ -383,7 +392,7 @@
      * @param mbeanId
      * @return Returns an SQL insert statement for one statistic given the correct information.
      */
-    public static String prepareInsertSnapshotStatement(String snapshot_time, String statsValueList, int mbeanId) {
+    public String prepareInsertSnapshotStatement(String snapshot_time, String statsValueList, int mbeanId) {
         String retval = "INSERT INTO Statistics (snapshot_time, statsValueList, mbeanId) VALUES (";
         retval += snapshot_time;
         retval += ",";
@@ -398,7 +407,7 @@
      * @param s
      * @return A String with ' at the beginning and end
      */
-    private static String surroundWithQuotes(String s) {
+    private String surroundWithQuotes(String s) {
         return "'" + s.trim() + "'";
     }
     
@@ -412,7 +421,7 @@
      * @param everyNthSnapshot
      * @return ArrayList
      */ 
-    public static ArrayList<HashMap<String, HashMap<String, Object>>> fetchData(Integer numberOfSnapshot, 
+    public ArrayList<HashMap<String, HashMap<String, Object>>> fetchData(Integer numberOfSnapshot, 
                                                                                 Integer everyNthSnapshot) {
         ArrayList<HashMap<String, HashMap<String, Object>>> stats = new ArrayList<HashMap<String, HashMap<String, Object>>>();
         openActiveConnection();
@@ -453,7 +462,7 @@
      * and Object is the value. Additionally, if String is "times" then it maps to a HashMap
      * containing snapshot_time and snapshot_date information.
      */
-    private static HashMap<String, HashMap<String, Object>> packageSnapshotData(Long snapshotTime) {
+    private HashMap<String, HashMap<String, Object>> packageSnapshotData(Long snapshotTime) {
         HashMap<String, HashMap<String, Object>> snapshotPkg = new HashMap<String, HashMap<String, Object>>();
         openActiveConnection();
         ResultSet snapshotData = fetchSnapshotDataFromDB(snapshotTime);
@@ -497,7 +506,7 @@
      * @param snapshotTime
      * @return Returns a ResultSet with all statistic information that matches the snapshot_time.
      */
-    private static ResultSet fetchSnapshotDataFromDB(Long snapshotTime) {
+    private ResultSet fetchSnapshotDataFromDB(Long snapshotTime) {
         String query = "SELECT S.statsValueList AS statsValueList, M.statsNameList AS statsNameList, S.snapshot_time AS snapshot_time, M.mbeanName AS mbeanName FROM Statistics S, MBeans M WHERE S.snapshot_time=" + snapshotTime;
         query += " AND S.mbeanId=M.id";
         ResultSet retval = null;
@@ -516,7 +525,7 @@
     /**
      * @return Returns a ResultSet with one column (snapshot_time) sorted in descending order
      */
-    private static ResultSet fetchSnapshotTimesFromDB() {
+    private ResultSet fetchSnapshotTimesFromDB() {
         String query = "SELECT DISTINCT snapshot_time FROM Statistics ORDER BY snapshot_time DESC";
         ResultSet retval = null;
         try {
@@ -534,7 +543,7 @@
     /**
      * Opens the global connection to activeDB
      */
-    private static void openActiveConnection() {
+    private void openActiveConnection() {
         try {
             conn = activeDS.getConnection();
         } catch(Exception e) {
@@ -545,7 +554,7 @@
     /**
      * Opens the global connection to archiveDB
      */
-    private static void openArchiveConnection() {
+    private void openArchiveConnection() {
         try {
             conn = archiveDS.getConnection();
         } catch(Exception e) {
@@ -556,7 +565,7 @@
     /**
      * Closes the global connection to a DB
      */
-    private static void closeConnection() {
+    private void closeConnection() {
         if(conn != null) {
             try {
                 conn.close();
@@ -573,7 +582,7 @@
      * @param everyNthSnapshot
      * @return HashMap which maps from a snapshot_time --> value of the mbean.statsName at that time
      */
-    public static TreeMap<Long, Long> getSpecificStatistics(    String mbeanName, 
+    public TreeMap<Long, Long> getSpecificStatistics(    String mbeanName, 
                                                                 String statsName, 
                                                                 int numberOfSnapshots, 
                                                                 int everyNthSnapshot, 
@@ -686,7 +695,7 @@
      * @param activeDS
      * @param archiveDS
      */
-    public static void setDataSources(DataSource active, DataSource archive) {
+    public void setDataSources(DataSource active, DataSource archive) {
         activeDS = active;
         archiveDS = archive;
     }

Modified: geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotProcessor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotProcessor.java?rev=610192&r1=610191&r2=610192&view=diff
==============================================================================
--- geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotProcessor.java (original)
+++ geronimo/server/trunk/applications/monitoring/agent-ejb/src/main/java/org/apache/geronimo/monitoring/snapshot/SnapshotProcessor.java Tue Jan  8 14:02:53 2008
@@ -74,7 +74,7 @@
             }
             
             // store the data in a DB
-            SnapshotDBHelper.addSnapshotToDB(aggregateStats);
+            (new SnapshotDBHelper()).addSnapshotToDB(aggregateStats);
             
             for(Iterator itt = aggregateStats.keySet().iterator(); itt.hasNext(); ) {
                 String mbean = (String)itt.next();