[esb-java-dev] svn commit r794 - in trunk/esb/java/modules/core/src/main/java/org/wso2/esb: . services statistics statistics/persistence

svn at wso2.org svn at wso2.org
Wed Feb 7 04:22:45 PST 2007


Author: indika
Date: Wed Feb  7 04:15:58 2007
New Revision: 794

Modified:
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBus.java
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusConfiguration.java
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/services/ServiceAdmin.java
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/StatisticsReporterThread.java
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/persistence/StatisticsDBUtils.java
Log:


Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBus.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBus.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBus.java	Wed Feb  7 04:15:58 2007
@@ -96,8 +96,10 @@
         Parameter synapseEnvParameter = serviceBusManager.configurationContext.getAxisConfiguration().getParameter(org.apache.synapse.Constants.SYNAPSE_ENV);
         if (synapseEnvParameter != null) {
             try {
+                String statisticsPersistenceInterval = esbConfiguration.getFirstProperty("StatisticsPersistenceInterval");
                 SynapseEnvironment synEnv = (SynapseEnvironment) synapseEnvParameter.getValue();
                 statisticsReporterThread = new StatisticsReporterThread(synEnv);
+                statisticsReporterThread.setDelay(Long.parseLong(statisticsPersistenceInterval));
                 statisticsReporterThread.start();
             } catch (Exception e) {
                 throw new ServiceBusException(e);

Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusConfiguration.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusConfiguration.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusConfiguration.java	Wed Feb  7 04:15:58 2007
@@ -37,7 +37,7 @@
         if (configuration == null) {
             // intializing the configurationXMLLocation
             configurationXMLLocation = "conf/server.xml";
-            configuration = new ServiceBusConfiguration();
+            configuration = new ServiceBusConfiguration();            
             log.info("Service Bus Configuration loaded from : " + configurationXMLLocation);
         }
         return configuration;

Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/services/ServiceAdmin.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/services/ServiceAdmin.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/services/ServiceAdmin.java	Wed Feb  7 04:15:58 2007
@@ -167,25 +167,31 @@
     }
 
     public String[] listServers() throws ServiceBusException {
-        Object ids = StatisticsDBUtils.getServersIds(pm);
+        Object namesObject = StatisticsDBUtils.getServersIds(pm);
         String[] names = new String[0];
-        if (ids instanceof Object[]) {
-            Object [] idObjects = (Object[]) ids;
-            names = new String[idObjects.length];
-            for (int i = 0; i < idObjects.length; i++) {
-                names[i] = (String) idObjects[i];
+        if (namesObject instanceof List) {
+            List idObjects = (List) namesObject;
+            names = new String[idObjects.size()];
+            for (int i = 0; i < idObjects.size(); i++) {
+                names[i] = (String) idObjects.get(i);
             }
-        } else if (ids != null) {
-            names = new String[]{(String) ids};
+        } else if (namesObject != null && namesObject instanceof String) {
+            names = new String[]{(String) namesObject};
         }
         return names;
     }
 
     public String[] listSequence() throws ServiceBusException {
-        StatisticsDO[] statisticsRecords = StatisticsDBUtils.getStatistics(pm, Constants.SEQUENCE_STATISTICS);
-        String[] names = new String[statisticsRecords.length];
-        for (int i = 0; i < names.length; i++) {
-            names[i] = statisticsRecords[i].getName();
+        Object namesObject = StatisticsDBUtils.getUniqueNames(pm, Constants.SEQUENCE_STATISTICS);
+        String[] names = new String[0];
+        if (namesObject instanceof List) {
+            List idObjects = (List) namesObject;
+            names = new String[idObjects.size()];
+            for (int i = 0; i < idObjects.size(); i++) {
+                names[i] = (String) idObjects.get(i);
+            }
+        } else if (namesObject != null && namesObject instanceof String) {
+            names = new String[]{(String) namesObject};
         }
         return names;
     }
@@ -250,10 +256,16 @@
     }
 
     public String[] listEndPoint() throws ServiceBusException {
-        StatisticsDO[] statisticsRecords = StatisticsDBUtils.getStatistics(pm, Constants.ENDPOINT_STATISTICS, 0);
-        String[] names = new String[statisticsRecords.length];
-        for (int i = 0; i < names.length; i++) {
-            names[i] = statisticsRecords[i].getName();
+        Object namesObject = StatisticsDBUtils.getUniqueNames(pm, Constants.ENDPOINT_STATISTICS);
+        String[] names = new String[0];       
+        if (namesObject instanceof List) {
+            List idObjects = (List) namesObject;
+            names = new String[idObjects.size()];
+            for (int i = 0; i < idObjects.size(); i++) {
+                names[i] = (String) idObjects.get(i);
+            }
+        } else if (namesObject != null && namesObject instanceof String) {
+            names = new String[]{(String) namesObject};
         }
         return names;
     }

Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/StatisticsReporterThread.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/StatisticsReporterThread.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/StatisticsReporterThread.java	Wed Feb  7 04:15:58 2007
@@ -24,6 +24,8 @@
 import org.wso2.esb.util.HibernateConfigFactory;
 
 import java.util.Iterator;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 
 /**
  *
@@ -40,6 +42,11 @@
     /** The reference to the synapse environment   */
     private SynapseEnvironment synapseEnvironment;
 
+    /** IP Address of Server */
+    private   String ipAddr;
+
+    private long delay = 60*1000;
+
     /**
      * To construct it is need synapse Env. and PersistenceManager
      *
@@ -49,6 +56,14 @@
         this.synapseEnvironment = synapseEnvironment;
     }
 
+    public long getDelay() {
+        return delay;
+    }
+
+    public void setDelay(long delay) {
+        this.delay = delay;
+    }
+
     /**
      *
      */
@@ -56,11 +71,24 @@
 
         while (!shutdownRequested) {
 
-            StatisticsCollector statisticsCollector = synapseEnvironment.getStatisticsCollector();           
+            StatisticsCollector statisticsCollector = synapseEnvironment.getStatisticsCollector();
 
             // log.info("Statistics Reporter is running");
             if (statisticsCollector != null) {
 
+                try {
+                    if (ipAddr == null) {
+                        InetAddress addr = InetAddress.getLocalHost();
+                        if (addr != null) {
+                            // Get IP Address
+                            ipAddr = addr.getHostAddress();
+
+                        }
+
+                    }
+                } catch (UnknownHostException e) {
+                    log.warn("Unable to report hostname or IP address for tracing", e);
+                }
                 // report sequence statistics to database
                 for (Iterator sequenceStatistics = statisticsCollector.getSequenceStatistics();
                      sequenceStatistics.hasNext();) {
@@ -69,7 +97,7 @@
                     if (statisticsHolderObject instanceof StatisticsHolder) {
                         StatisticsHolder statisticsHolder =
                             (StatisticsHolder) statisticsHolderObject;
-                        StatisticsDBUtils.updateRecord(pm, "1", statisticsHolder);
+                        StatisticsDBUtils.updateRecord(pm, ipAddr, statisticsHolder);
                         statisticsHolder.clearStatistics();
                     }
                 }
@@ -81,7 +109,7 @@
                     if (statisticsHolderObject instanceof StatisticsHolder) {
                         StatisticsHolder statisticsHolder =
                             (StatisticsHolder) statisticsHolderObject;
-                        StatisticsDBUtils.updateRecord(pm, "1", statisticsHolder);
+                        StatisticsDBUtils.updateRecord(pm, ipAddr, statisticsHolder);
                         statisticsHolder.clearStatistics();
                     }
                 }
@@ -93,7 +121,7 @@
                     if (statisticsHolderObject instanceof StatisticsHolder) {
                         StatisticsHolder statisticsHolder =
                             (StatisticsHolder) statisticsHolderObject;
-                        StatisticsDBUtils.updateRecord(pm, "1", statisticsHolder);
+                        StatisticsDBUtils.updateRecord(pm, ipAddr, statisticsHolder);
                         statisticsHolder.clearStatistics();
                     }
                 }
@@ -101,7 +129,7 @@
 
             try {
                 // sleep for one minute
-                Thread.sleep(1000 * 60);    // TODO FIXME to be configurable
+                Thread.sleep(delay);   
             } catch (InterruptedException ignore) {}
         }
     }

Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/persistence/StatisticsDBUtils.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/persistence/StatisticsDBUtils.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/statistics/persistence/StatisticsDBUtils.java	Wed Feb  7 04:15:58 2007
@@ -31,12 +31,12 @@
 public class StatisticsDBUtils {
 
     private static final String SERVER_ID_ = "serverId";
-    private static final String CATEGORY_  = "category";
-    private static final String NAME_      = "name";
+    private static final String CATEGORY_ = "category";
+    private static final String NAME_ = "name";
     private static final String DIRECTION_ = "direction";
 
     private static StatisticsDO createStatisticsRecord(String serverId, int statisticsCategory,
-        String key, int direction, Statistics statistics) {
+                                                       String key, int direction, Statistics statistics) {
 
         StatisticsDO statisticsDO = new StatisticsDO();
         statisticsDO.setName(key);
@@ -60,17 +60,17 @@
      * @
      */
     public static void insertRecord(PersistenceManager pm, String serverId,
-        StatisticsHolder statisticsHolder) {
+                                    StatisticsHolder statisticsHolder) {
 
         String key = statisticsHolder.getKey();
         int statisticsCategory = statisticsHolder.getStatisticsCategory();
         if (statisticsHolder.getInFlowStatistics() != null) {
             pm.addStatisticsRecord(createStatisticsRecord(
-                serverId, statisticsCategory, key, 0, statisticsHolder.getInFlowStatistics()));
+                    serverId, statisticsCategory, key, 0, statisticsHolder.getInFlowStatistics()));
         }
         if (statisticsHolder.getOutFlowStatistics() != null) {
             pm.addStatisticsRecord(createStatisticsRecord(
-                serverId, statisticsCategory, key, 1, statisticsHolder.getOutFlowStatistics()));
+                    serverId, statisticsCategory, key, 1, statisticsHolder.getOutFlowStatistics()));
         }
     }
 
@@ -83,17 +83,17 @@
      * @
      */
     public static void updateRecord(PersistenceManager pm, String serverId,
-        StatisticsHolder statisticsHolder) {
+                                    StatisticsHolder statisticsHolder) {
 
         String key = statisticsHolder.getKey();
         int statisticsCategory = statisticsHolder.getStatisticsCategory();
         if (statisticsHolder.getInFlowStatistics() != null) {
             updateRecord(pm, serverId, statisticsCategory,
-                key, 0, statisticsHolder.getInFlowStatistics());
+                    key, 0, statisticsHolder.getInFlowStatistics());
         }
         if (statisticsHolder.getOutFlowStatistics() != null) {
             updateRecord(pm, serverId, statisticsCategory,
-                key, 1, statisticsHolder.getOutFlowStatistics());
+                    key, 1, statisticsHolder.getOutFlowStatistics());
         }
     }
 
@@ -109,12 +109,12 @@
      * @
      */
     private static void updateRecord(PersistenceManager pm, String serverId,
-        int statisticsCategory, String key, int direction, Statistics statistics) {
+                                     int statisticsCategory, String key, int direction, Statistics statistics) {
 
         String queryString = "from " + Constants.DBAccess.STATISTICS_DO + " " +
-            " where " + SERVER_ID_ + "= '" + serverId + "' and " +
-            CATEGORY_ + "=" + statisticsCategory + " and " + NAME_ + "= '" + key +
-            "' and " + DIRECTION_ + " = " + direction + "";
+                " where " + SERVER_ID_ + "= '" + serverId + "' and " +
+                CATEGORY_ + "=" + statisticsCategory + " and " + NAME_ + "= '" + key +
+                "' and " + DIRECTION_ + " = " + direction + "";
 
         int currentTotalCount = statistics.getCount();
         int currentFaultCount = statistics.getFaultCount();
@@ -144,11 +144,11 @@
             if (updatedTotalCount != 0) {
                 updatedFaultCount = currentFaultCount + previousFaultCount;
                 updatedAvgTime = (currentAvgTime * currentTotalCount +
-                    previousAvgTime * previousTotalCount) / updatedTotalCount;
+                        previousAvgTime * previousTotalCount) / updatedTotalCount;
                 updatedMaxTime = (currentMaxTime * currentTotalCount +
-                    previousMaxTime * previousTotalCount) / updatedTotalCount;
+                        previousMaxTime * previousTotalCount) / updatedTotalCount;
                 updatedMinTime = (currentMinTime * currentTotalCount +
-                    previousMinTime * previousTotalCount) / updatedTotalCount;
+                        previousMinTime * previousTotalCount) / updatedTotalCount;
                 previousDO.setFaultCount(updatedFaultCount);
                 previousDO.setTotalCount(updatedTotalCount);
                 previousDO.setMaxTime(updatedMaxTime);
@@ -159,7 +159,7 @@
 
         } else if (resultSet == null || resultSet.length == 0) {
             previousDO = createStatisticsRecord(
-                serverId, statisticsCategory, key, direction, statistics);
+                    serverId, statisticsCategory, key, direction, statistics);
             pm.addStatisticsRecord(previousDO);
         }
     }
@@ -181,7 +181,7 @@
     }
 
     public static StatisticsDO[]  getStatistics(PersistenceManager pm, String serverid,
-        int direction, int category) {
+                                                int direction, int category) {
 
         String queryString = "from " + Constants.DBAccess.STATISTICS_DO + " " +
                 " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
@@ -198,7 +198,7 @@
 
 
     public static StatisticsDO[] getStatistics(PersistenceManager pm, String serverid,
-        int category, String name) {
+                                               int category, String name) {
 
         String queryString = "from  " + Constants.DBAccess.STATISTICS_DO + " " +
                 " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
@@ -207,7 +207,7 @@
     }
 
     public static StatisticsDO getStatistics(PersistenceManager pm, String serverid, int category,
-        int direction, String name) {
+                                             int direction, String name) {
 
         String queryString = "from  " + Constants.DBAccess.STATISTICS_DO + " " +
                 " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
@@ -237,7 +237,7 @@
     }
 
     public static StatisticsDO[]  getStatisticsForServer(PersistenceManager pm, String serverid,
-        int category) {
+                                                         int category) {
 
         String queryString = "from " + Constants.DBAccess.STATISTICS_DO + " " +
                 " where " + SERVER_ID_ + " = '" + serverid +
@@ -246,7 +246,7 @@
     }
 
     public static StatisticsDO[]  getStatisticsForServer(PersistenceManager pm, String serverid,
-        int direction, int category) {
+                                                         int direction, int category) {
 
         String queryString = "from  " + Constants.DBAccess.STATISTICS_DO + " " +
                 " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
@@ -255,31 +255,39 @@
     }
 
     public static Object getSummaryStatisticsForServer(PersistenceManager pm, String serverid,
-        int direction, int category) {
+                                                       int direction, int category) {
 
         String queryString = "select sum(totalCount), sum(faultCount), avg(maxTime), " +
-            "avg(minTime), avg(avgTime) from  " + Constants.DBAccess.STATISTICS_DO + " " +
-            " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
-            " and " + DIRECTION_ + " = " + direction + "";
+                "avg(minTime), avg(avgTime) from  " + Constants.DBAccess.STATISTICS_DO + " " +
+                " where " + SERVER_ID_ + " = '" + serverid + "' and " + CATEGORY_ + "= " + category +
+                " and " + DIRECTION_ + " = " + direction + "";
         return pm.createAnewObjectFromStatistics(queryString);
     }
-     public static List getTotalCountForServerS(PersistenceManager pm,int category) {
+
+    public static List getTotalCountForServerS(PersistenceManager pm, int category) {
         String queryString = "select  " + SERVER_ID_ + " ,sum(totalCount) from  " +
-            Constants.DBAccess.STATISTICS_DO + " "+
-            " where " + CATEGORY_ + "= " + category +" group by "+SERVER_ID_+" ";
+                Constants.DBAccess.STATISTICS_DO + " " +
+                " where " + CATEGORY_ + "= " + category + " group by " + SERVER_ID_ + " ";
 
         return pm.selectCustomObjectList(queryString);
     }
+
     public static Object getServersIds(PersistenceManager pm) {
         String queryString = "select distinct " + SERVER_ID_ + " from  " +
-            Constants.DBAccess.STATISTICS_DO + " ";
-        return pm.createAnewObjectFromStatistics(queryString);
+                Constants.DBAccess.STATISTICS_DO + " ";
+        return pm.selectCustomObjectList(queryString);
+    }
+
+    public static Object getUniqueNames(PersistenceManager pm, int category) {
+        String queryString = "select distinct " + NAME_ + " from  " +
+                Constants.DBAccess.STATISTICS_DO + " where " + CATEGORY_ + "= " + category + "  ";
+        return pm.selectCustomObjectList(queryString);
     }
 
-   public static List getTotalCountForCategory(PersistenceManager pm,int category) {
+    public static List getTotalCountForCategory(PersistenceManager pm, int category) {
         String queryString = "select " + NAME_ + ",sum(totalCount) from  " +
-            Constants.DBAccess.STATISTICS_DO + " "  +
-        " where " + CATEGORY_ + "= " + category + " group by "+NAME_+" ";
+                Constants.DBAccess.STATISTICS_DO + " " +
+                " where " + CATEGORY_ + "= " + category + " group by " + NAME_ + " ";
         return pm.selectCustomObjectList(queryString);
     }
 }




More information about the Esb-java-dev mailing list