[jboss-cvs] jboss-profiler/java/src/expansion/org/jboss/profiler/exp/agent ...
Takuro Okada
t2-okada at nri.co.jp
Tue Oct 31 06:20:06 EST 2006
User: tokada
Date: 06/10/31 06:20:06
Modified: java/src/expansion/org/jboss/profiler/exp/agent Tag:
JBossProfiler_Expansion
DefaultProfilerServiceMBean.java
DefaultProfilerService.java
Log:
Added some interfaces for the persistor.
Revision Changes Path
No revision
No revision
1.1.2.2 +19 -27 jboss-profiler/java/src/expansion/org/jboss/profiler/exp/agent/Attic/DefaultProfilerServiceMBean.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DefaultProfilerServiceMBean.java
===================================================================
RCS file: /cvsroot/jboss/jboss-profiler/java/src/expansion/org/jboss/profiler/exp/agent/Attic/DefaultProfilerServiceMBean.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- DefaultProfilerServiceMBean.java 26 Oct 2006 08:58:56 -0000 1.1.2.1
+++ DefaultProfilerServiceMBean.java 31 Oct 2006 11:20:06 -0000 1.1.2.2
@@ -22,33 +22,10 @@
package org.jboss.profiler.exp.agent;
-import java.util.Map;
-
-import org.jboss.profiler.exp.agent.collector.model.Metric;
-import org.jboss.profiler.exp.agent.collector.model.MetricName;
+import org.jboss.profiler.exp.agent.collector.model.MetricsMap;
/**
* The JMX interface of profiler service.
- * <p>In default, the following map objects are created. </p>
- * <p>
- * <table border="1">
- * <tr>
- * <td colspan="4">Map</td>
- * </tr>
- * <tr>
- * <td rowspan="3" valign="top">category : String</td>
- * <td colspan="3">Map</td>
- * </tr>
- * <tr>
- * <td rowspan="2" valign="top">operation name : String</td>
- * <td colspan="3">Map</td>
- * </tr>
- * <tr>
- * <td>MetricName</td>
- * <td>Metric</td>
- * </tr>
- * </table>
- * </p>
*
* @author Takuro Okada (Nomura Research Institute, Ltd.)
* Copyright 2006 Nomura Research Institute, Ltd. All Rights Reserved.
@@ -90,9 +67,24 @@
void setStorable(boolean storable);
/**
- * Gets a snapshot of metric data.
- * @return
+ * Sets a period to persist metrics data.
+ * @param persistentPeriod - a period (minutes)
+ */
+ void setPersistentPeriod(long persistentPeriod);
+
+ /**
+ * Gets a snapshot of current metrics data.
+ * @return metrics data
+ */
+ MetricsMap snapMetrics();
+
+ /**
+ * Gets a snapshot of specified metrics data.
+ * @param metricClass - model class
+ * @param fromDate - search date (from)
+ * @param toDate - search date (to)
+ * @return metrics data
*/
- Map<String, Map<String, Map<MetricName, Metric>>> snapMetrics();
+ MetricsMap snapMetrics(String metricClassName, String metricName, long fromDate, long toDate);
}
1.1.2.2 +40 -29 jboss-profiler/java/src/expansion/org/jboss/profiler/exp/agent/Attic/DefaultProfilerService.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DefaultProfilerService.java
===================================================================
RCS file: /cvsroot/jboss/jboss-profiler/java/src/expansion/org/jboss/profiler/exp/agent/Attic/DefaultProfilerService.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- DefaultProfilerService.java 26 Oct 2006 08:58:56 -0000 1.1.2.1
+++ DefaultProfilerService.java 31 Oct 2006 11:20:06 -0000 1.1.2.2
@@ -22,8 +22,7 @@
package org.jboss.profiler.exp.agent;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
@@ -31,8 +30,8 @@
import org.apache.log4j.Logger;
import org.jboss.profiler.exp.agent.collector.MetricCollector;
-import org.jboss.profiler.exp.agent.collector.model.Metric;
import org.jboss.profiler.exp.agent.collector.model.MetricName;
+import org.jboss.profiler.exp.agent.collector.model.MetricsMap;
import org.jboss.profiler.exp.agent.persistor.MetricsPersistor;
import org.jboss.profiler.exp.util.CopyUtil;
@@ -51,7 +50,7 @@
/*
* metrics entity
*/
- private Map<String, Map<String, Map<MetricName, Metric>>> metricsMap = new HashMap<String, Map<String,Map<MetricName, Metric>>>();
+ private MetricsMap metricsMap = new MetricsMap();
/*
* collector executor
@@ -61,8 +60,10 @@
/*
* persistor
*/
+ private String persistorName = null;
private MetricsPersistor metricsPersistor = null;
private Timer persistentTimer = null;
+ private long persistentPeriod = 1*60*60*1000;
/*
* parameters
@@ -70,11 +71,17 @@
private boolean storable = false;
public void start() throws Exception {
- persistentTimer = new Timer("Persistent Timer", true);
- persistentTimer.scheduleAtFixedRate(new PersistentTask(), 10000, 1*60*60*1000);
-
collectorExecutor = Executors.newSingleThreadExecutor();
+ try {
+ metricsPersistor = (MetricsPersistor)Class.forName(persistorName).newInstance();
+ } catch (Exception e) {
+ logger.error("Persistor name is illegal.");
+ }
+
+ persistentTimer = new Timer("Persistent Timer", true);
+ persistentTimer.scheduleAtFixedRate(new PersistentTask(), 10000, persistentPeriod);
+
logger.info("started");
}
@@ -87,8 +94,8 @@
}
public void stop() throws Exception {
- collectorExecutor.shutdown();
persistentTimer.cancel();
+ collectorExecutor.shutdown();
logger.info("stoped");
}
@@ -103,46 +110,50 @@
}
public void setPersistorName(String persistorName) {
- try {
- metricsPersistor = (MetricsPersistor)Class.forName(persistorName).newInstance();
- } catch (Exception e) {
- logger.error("Persistor name is illegal.");
+ this.persistorName = persistorName;
}
+
+ public void setPersistentPeriod(long persistentPeriod) {
+ this.persistentPeriod = persistentPeriod * 60 * 1000;
}
private void saveMetrics() {
- if(!storable) return;
+ if(!storable || metricsMap.size()==0) return;
metricsPersistor.store(copyMetrics());
resetMetrics();
}
public void resetMetrics() {
synchronized(metricsMap) {
- for(Map<String, Map<MetricName, Metric>> omap : metricsMap.values()) {
- synchronized(omap) {
- for(Map<MetricName, Metric> mmap : omap.values()) {
- synchronized(mmap) {
- for(Metric metric : mmap.values()) {
- metric.reset();
- }
- }
- }
- }
- }
+ metricsMap = new MetricsMap();
}
}
- public Map<String, Map<String, Map<MetricName, Metric>>> snapMetrics() {
+ public MetricsMap snapMetrics() {
return copyMetrics();
}
+ public MetricsMap snapMetrics(String metricClassName, String metricName, long fromDate, long toDate) {
+ MetricsMap result = null;
+ Date from = null;
+ Date to = null;
+ try {
+ if(fromDate>0) from = new Date(fromDate);
+ if(toDate>0) to = new Date(toDate);
+ result = metricsPersistor.load(Class.forName(metricClassName), MetricName.valueOf(metricName), from, to);
+ } catch (ClassNotFoundException e) {
+ logger.error("Metric class name is illegal.");
+ }
+ return result;
+ }
+
@SuppressWarnings("unchecked")
- private Map<String, Map<String, Map<MetricName, Metric>>> copyMetrics() {
- Map result = null;
+ private MetricsMap copyMetrics() {
+ MetricsMap result = null;
synchronized(metricsMap) {
try {
// TODO use Metric#clone()
- result = (Map)CopyUtil.deepCopy((HashMap)metricsMap);
+ result = (MetricsMap)CopyUtil.deepCopy(metricsMap);
} catch (Exception e) {
logger.error("failed to copy the metrics data.");
}
More information about the jboss-cvs-commits
mailing list