Index: console/src/main/org/jboss/console/plugins/monitor/CreateSnapshotServlet.java
===================================================================
--- console/src/main/org/jboss/console/plugins/monitor/CreateSnapshotServlet.java	(revision 75409)
+++ console/src/main/org/jboss/console/plugins/monitor/CreateSnapshotServlet.java	(working copy)
@@ -98,6 +98,10 @@
          error("Unable to pull attribute value from MBean, does the attribute exist? ", req, resp);
          return;
       }
+      boolean enabled = req.getParameter("enabled") != null;
+      log.debug("Enabled: " + enabled);
+      boolean persisted = req.getParameter("persisted") != null;
+      log.debug("Persisted: " + persisted);
       String period = req.getParameter("period").trim();
       log.debug(period);
       long timePeriod = 0;
@@ -110,24 +114,103 @@
          error("Illegal format for watch period.", req, resp);
          return;
       }
+      String maxSize = req.getParameter("maxSize").trim();
+      log.debug(maxSize);
+      int maxSizeInt = 0;
       try
       {
-         SnapshotRecordingMonitor monitor = new SnapshotRecordingMonitor();
-
-         monitor.setMonitorName(monitorName);
-         monitor.setObservedObject(oname);
-         monitor.setObservedAttribute(attribute);
-         monitor.setPeriod(timePeriod);
-         ObjectName sname = new ObjectName("jboss.snapshot:name=" + monitorName);
-         mbeanServer.registerMBean(monitor, sname);
-         resp.sendRedirect("/web-console/manageSnapshot.jsp?monitorObjectName=" + java.net.URLEncoder.encode(sname.toString()));
+    	  maxSizeInt = Integer.parseInt(maxSize);
       }
-      catch (Exception ex)
+      catch (NumberFormatException e)
       {
-         error("Failed to create non-persisted monitor: " + ex.toString(), req, resp);
+         error("Illegal format for maximal size.", req, resp);
+         return;
       }
+      if (maxSizeInt < 0)
+      {
+         error("Illegal value for maximal size.", req, resp);
+      }
+      String monitorObjectName = "jboss.snapshot:service="
+            + monitorName.replace(' ', '_');
+      if (persisted)
+      {
+         try
+         {
+            Object[] args = {"snapshots", monitorName, "-service.xml"};
+            String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"};
+            Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature);
+            if (((Boolean)rtn).booleanValue())
+            {
+               error("Monitor with this name already exists", req, resp);
+               return;
+            }
+         }
+         catch (Exception ex)
+         {
+            error("Failed to determine if monitor with that name already exists: " + ex.toString(), req, resp);
+            return;
+         }
+         StringBuffer xml = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+         xml.append("<server>\n");
 
+         xml.append("<mbean code=\"org.jboss.monitor.SnapshotRecordingMonitor\"\n");
+         xml.append("       name=\"" + monitorObjectName + "\">\n");
+         xml.append("  <attribute name=\"MonitorName\">" + monitorName + "</attribute>\n");
+         try
+         {
+         if (mbeanServer.isInstanceOf(oname, "org.jboss.system.ServiceMBean"))
+         {
+            xml.append("  <depends optional-attribute-name=\"ObservedObject\">" + objectName + "</depends>\n");
+         }
+         else
+         {
+            xml.append("  <attribute name=\"ObservedObject\">" + objectName + "</attribute>\n");
+         }
+         }
+         catch (Exception ex)
+         {
+            error("failed creating service: " + ex.toString(), req, resp);
+            return;
+         }
+         xml.append("  <attribute name=\"ObservedAttribute\">" + attribute + "</attribute>\n");
+         xml.append("  <attribute name=\"Period\">" + timePeriod + "</attribute>\n");
+         xml.append("  <attribute name=\"MaxSize\">" + maxSizeInt + "</attribute>\n");
+         xml.append("  <attribute name=\"Enabled\">" + enabled + "</attribute>\n");
+         xml.append("</mbean>\n</server>");
 
+         try
+         {
+            Object[] args = {"snapshots", monitorName, "-service.xml", xml.toString(), Boolean.TRUE};
+            String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", "boolean"};
+            mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "store", args, signature);
+         }
+         catch (Exception ex)
+         {
+            error("Failed to create persisted file: " + ex.toString(), req, resp);
+            return;
+         }
+      }
+      else
+      {
+         try
+         {
+            SnapshotRecordingMonitor monitor = new SnapshotRecordingMonitor();
+   
+            monitor.setMonitorName(monitorName);
+            monitor.setObservedObject(oname);
+            monitor.setObservedAttribute(attribute);
+            monitor.setPeriod(timePeriod);
+            monitor.setMaxSize(maxSizeInt);
+            monitor.setEnabled(enabled);
+            mbeanServer.registerMBean(monitor, new ObjectName(monitorObjectName));
+            monitor.create();
+            monitor.start();
+         }
+         catch (Exception ex)
+         {
+            error("Failed to create non-persisted monitor: " + ex.toString(), req, resp);
+         }
+      }
+      req.getRequestDispatcher("/createSnapshotSummary.jsp").forward(req, resp);
    }
-
 }
Index: console/src/main/org/jboss/console/plugins/monitor/ManageSnapshotServlet.java
===================================================================
--- console/src/main/org/jboss/console/plugins/monitor/ManageSnapshotServlet.java	(revision 75409)
+++ console/src/main/org/jboss/console/plugins/monitor/ManageSnapshotServlet.java	(working copy)
@@ -26,6 +26,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 
+import javax.management.Attribute;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.servlet.ServletException;
@@ -81,12 +82,14 @@
          return;
       }
       action = action.trim();
+      String monitorName = req.getParameter("monitorName").trim();
       MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
-      ObjectName monitorObjectName;
+      ObjectName monitorObjectName, oname = null;
       String attribute = null;
       try
       {
          monitorObjectName = new ObjectName(req.getParameter("monitorObjectName"));
+         oname = (ObjectName) mbeanServer.getAttribute(monitorObjectName, "ObservedObject");
          attribute = (String)mbeanServer.getAttribute(monitorObjectName, "ObservedAttribute");
       }
       catch (Exception ex)
@@ -94,44 +97,12 @@
          error("Malformed Monitor ObjectName: " + req.getParameter("monitorObjectName"), req, resp);
          return;
       }
-      if (action.equals("Start Snapshot"))
+      if (action.equals("Clear Dataset"))
       {
          Object[] nullArgs = {};
          String[] nullSig = {};
          try
          {
-            mbeanServer.invoke(monitorObjectName, "startSnapshot", nullArgs, nullSig);
-         }
-         catch (Exception ex)
-         {
-            error("Problem invoking startSnapshot: " + ex.toString(), req, resp);
-            return;
-         }
-         req.getRequestDispatcher("/manageSnapshot.jsp").forward(req, resp);
-         return;
-      }
-      else if (action.equals("Stop Snapshot"))
-      {
-         Object[] nullArgs = {};
-         String[] nullSig = {};
-         try
-         {
-            mbeanServer.invoke(monitorObjectName, "endSnapshot", nullArgs, nullSig);
-         }
-         catch (Exception ex)
-         {
-            error("Problem invoking endSnapshot: " + ex.toString(), req, resp);
-            return;
-         }
-         req.getRequestDispatcher("/manageSnapshot.jsp").forward(req, resp);
-         return;
-      }
-      else if (action.equals("Clear Dataset"))
-      {
-         Object[] nullArgs = {};
-         String[] nullSig = {};
-         try
-         {
             mbeanServer.invoke(monitorObjectName, "clearData", nullArgs, nullSig);
          }
          catch (Exception ex)
@@ -148,7 +119,9 @@
          try
          {
             log.debug("removing snapshot: " + monitorObjectName.toString());
-            mbeanServer.unregisterMBean(monitorObjectName);
+            Object[] args = {"snapshots", monitorName, "-service.xml"};
+            String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"};
+            mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "remove", args, signature);
             req.getRequestDispatcher("/ServerInfo.jsp").forward(req, resp);
          }
          catch (Exception ex)
@@ -222,8 +195,110 @@
          out.close();
          return;
       }
-      error("Unknown Action", req, resp);
-      return;
+      boolean enabled = req.getParameter("enabled") != null;
+      log.debug("Enabled: " + enabled);
+      boolean persisted = req.getParameter("persisted") != null;
+      log.debug("Persisted: " + persisted);
+      String period = req.getParameter("period").trim();
+      log.debug(period);
+      long timePeriod = 0;
+      try
+      {
+         timePeriod = Long.parseLong(period);
+      }
+      catch (NumberFormatException e)
+      {
+         error("Illegal format for watch period.", req, resp);
+         return;
+      }
+      String maxSize = req.getParameter("maxSize").trim();
+      log.debug(maxSize);
+      int maxSizeInt = 0;
+      try
+      {
+        maxSizeInt = Integer.parseInt(maxSize);
+      }
+      catch (NumberFormatException e)
+      {
+         error("Illegal format for maximal size.", req, resp);
+         return;
+
+      }
+      if (maxSizeInt < 0)
+      {
+         error("Illegal value for maximal size.", req, resp);
+      }
+      try
+      {
+         mbeanServer.setAttribute(monitorObjectName, new Attribute("Period", new Long(timePeriod)));
+         mbeanServer.setAttribute(monitorObjectName, new Attribute("MaxSize", new Integer(maxSizeInt)));
+         mbeanServer.setAttribute(monitorObjectName, new Attribute("Enabled", new Boolean(enabled)));
+      }
+      catch (Exception ex)
+      {
+         error("Failed to update mbean monitor: " + ex.toString(), req, resp);
+      }
+      if (persisted)
+      {
+
+         try
+         {
+            Object[] args = {"snapshots", monitorName, "-service.xml"};
+            String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"};
+            Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature);
+            if (!((Boolean) rtn).booleanValue())
+            {
+               error("Monitor with this name doesn't exist in repository", req, resp);
+               return;
+            }
+         }
+         catch (Exception ex)
+         {
+            error("Failed to determine if monitor with that name already exists: " + ex.toString(), req, resp);
+            return;
+         }
+         StringBuffer xml = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+         xml.append("<server>\n");
+
+         xml.append("<mbean code=\"org.jboss.monitor.SnapshotRecordingMonitor\"\n");
+         xml.append("       name=\"jboss.snapshot:service=" + monitorName.replace(' ', '_') + "\">\n");
+         xml.append("  <attribute name=\"MonitorName\">" + monitorName + "</attribute>\n");
+         try
+         {
+            if (mbeanServer.isInstanceOf(oname, "org.jboss.system.ServiceMBean"))
+            {
+               xml.append("  <depends optional-attribute-name=\"ObservedObject\">" + oname + "</depends>\n");
+            }
+            else
+            {
+               xml.append("  <attribute name=\"ObservedObject\">" + oname + "</attribute>\n");
+            }
+         }
+         catch (Exception ex)
+         {
+            error("failed creating service: " + ex.toString(), req, resp);
+            return;
+         }
+         xml.append("  <attribute name=\"ObservedAttribute\">" + attribute + "</attribute>\n");
+         xml.append("  <attribute name=\"Period\">" + timePeriod + "</attribute>\n");
+         xml.append("  <attribute name=\"MaxSize\">" + maxSizeInt + "</attribute>\n");
+         xml.append("  <attribute name=\"Enabled\">" + enabled + "</attribute>\n");
+         xml.append("</mbean>\n</server>");
+
+         try
+         {
+            Object[] args = {"snapshots", monitorName, "-service.xml", xml.toString(), Boolean.TRUE};
+            String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", "boolean"};
+            mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "store", args, signature);
+         }
+         catch (Exception ex)
+         {
+            error("Failed to create persisted file: " + ex.toString(), req, resp);
+            return;
+         }
+      }
+      req.setAttribute("error", "Update complete!");
+      req.getRequestDispatcher("/manageSnapshot.jsp").forward(req, resp);
    }
 
 }
Index: console/src/resources/webconsole.war/createSnapshotSummary.jsp
===================================================================
--- console/src/resources/webconsole.war/createSnapshotSummary.jsp	(revision 0)
+++ console/src/resources/webconsole.war/createSnapshotSummary.jsp	(revision 0)
@@ -0,0 +1,103 @@
+<%@ page import="javax.management.MBeanServer,
+                 org.jboss.mx.util.MBeanServerLocator,
+                 org.jboss.mx.util.InstanceOfQueryExp,
+                 java.util.Set,
+                 java.util.Iterator,
+                 javax.management.ObjectInstance,
+                 javax.management.ObjectName,
+                 java.util.HashSet"%>
+ <%--
+ |
+ |  Author: Bill Burke    (bill@jboss.org)
+ |
+ | Distributable under LGPL license.
+ | See terms of license at gnu.org.
+ +--%>
+<%
+   String attribute = request.getParameter("attribute");
+   if (attribute == null) attribute = "";
+   String monitorName = request.getParameter("monitorName");
+   if (monitorName == null) monitorName = attribute + " Snapshot";
+   String objectName = request.getParameter("objectName");
+   if (objectName == null) objectName = "";
+   String period = request.getParameter("period");
+   if (period == null) period = "";
+   String maxSize = request.getParameter("maxSize");
+   if (maxSize == null) maxSize = "";
+   String enabled = request.getParameter("enabled");
+   if (enabled == null) enabled = "";
+%>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>JBoss Management Console - Create Snapshot Summary</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
+</head>
+<body>
+<!-- header begin -->
+	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<div id="header">
+		&nbsp;</div>
+	<div id="navigation_bar">
+	</div>
+<!-- header end -->
+<hr class="hide"/>
+	<center>
+	<div id="content">
+		<div class="content_block" style="width: 100%; height: 247">
+			<h3>Snapshot MBean Monitor Created</h3>
+					<p>&nbsp;</p>
+<table cellspacing="2" cellpadding="2" border="0">
+<tr>
+    <td><b>Monitor Name</b></td>
+    <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>"></td>
+    <td><i>The name of the monitor and how it will be references within web console</i></td>
+</tr>
+<tr>
+    <td><b>Object Name</b></td>
+    <td><input type="text" name="objectName" value="<%=objectName%>" size="35"></td>
+    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+</tr>
+<tr>
+    <td><b>Attribute</b></td>
+    <td><input type="text" name="attribute" value="<%=attribute%>"  size="35"></td>
+    <td><i>The MBean Attribute you are monitoring</i></td>
+</tr>
+<tr>
+    <td><b>Time Period</b></td>
+    <td><input type="text" name="period" size="35" value="<%=period%>"></td>
+    <td><i>How often should threshold be tested.</i></td>
+</tr>
+<tr>
+    <td><b>Max. Size</b></td>
+    <td><input type="text" name="maxSize" size="35" value="<%=maxSize%>"></td>
+    <td><i>Limit number of snapshots keep in memory. 0 = no limit.</i></td>
+</tr>
+<tr>
+    <td><b>Persisted</b></td>
+    <td><input type="checkbox" name="persisted" value="" checked></td>
+    <td><i>Should this snapshot be created for next JBoss reboot?</i></td>
+</tr>
+<tr>
+    <td><b>Enable Snapshot</b></td>
+    <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
+    <td><i>Should this snapshot be enabled.</i></td>
+</tr>
+</table>
+		</div>
+		<div class="spacer"><hr/></div>
+	</div>
+	</center>
+<!-- content end -->
+
+<hr class="hide"/>
+<!-- footer begin -->
+	<div id="footer">
+		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="footer_bar">&nbsp;</div>
+	</div>
+<!-- footer end -->
+</body>
+</html>
Index: console/src/resources/webconsole.war/manageSnapshot.jsp
===================================================================
--- console/src/resources/webconsole.war/manageSnapshot.jsp	(revision 75409)
+++ console/src/resources/webconsole.war/manageSnapshot.jsp	(working copy)
@@ -34,7 +34,8 @@
    ObjectName observedObject = (ObjectName)mbeanServer.getAttribute(moname, "ObservedObject");
    String attribute = (String)mbeanServer.getAttribute(moname, "ObservedAttribute");
    Long period = (Long)mbeanServer.getAttribute(moname, "Period");
-   boolean recording = ((Boolean)mbeanServer.getAttribute(moname, "Recording")).booleanValue();
+   Integer maxSize = (Integer)mbeanServer.getAttribute(moname, "MaxSize");
+   boolean enabled = ((Boolean)mbeanServer.getAttribute(moname, "Enabled")).booleanValue();
 %>
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -91,17 +92,26 @@
 </tr>
 <tr>
     <td><b>Time Period</b></td>
-    <td><input type="text" name="period" size="35" value="<%=period%>" readonly></td>
+    <td><input type="text" name="period" size="35" value="<%=period%>"></td>
     <td><i>How often should threshold be tested.</i></td>
 </tr>
+<tr>
+    <td><b>Max. Size</b></td>
+    <td><input type="text" name="maxSize" size="35" value="<%=maxSize%>"></td>
+    <td><i>Limit number of snapshots keep in memory. 0 = no limit.</i></td>
+</tr>
+<tr>
+    <td><b>Persist Changes</b></td>
+    <td><input type="checkbox" name="persisted" value="" checked></td>
+    <td><i>Should changes be reflected in deployment file.</i></td>
+</tr>
+<tr>
+    <td><b>Enable Monitor</b></td>
+    <td><input type="checkbox" name="enabled" value="" <%=enabled ? "checked" : ""%>></td>
+    <td><i>Should this snapshot be enabled.</i></td>
+</tr>
 </table>
-<% if (recording)
-   {
-%>
-<input type="submit" name="action" value="Stop Snapshot">
-<% }  else {%>
-<input type="submit" name="action" value="Start Snapshot">
-<% } %>
+<input type="submit" name="action" value="Update Snapshot">
 <input type="submit" name="action" value="Graph Dataset">
 <input type="submit" name="action" value="Clear Dataset">
 <input type="submit" name="action" value="Show Dataset">
Index: console/src/resources/webconsole.war/createSnapshot.jsp
===================================================================
--- console/src/resources/webconsole.war/createSnapshot.jsp	(revision 75409)
+++ console/src/resources/webconsole.war/createSnapshot.jsp	(working copy)
@@ -25,6 +25,8 @@
    if (period == null) period = "";
    String maxSize = request.getParameter("maxSize");
    if (maxSize == null) maxSize = "";
+   String enabled = request.getParameter("enabled");
+   if (enabled == null) enabled = "";
 %>
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -78,6 +80,21 @@
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
     <td><i>How often should threshold be tested.</i></td>
 </tr>
+<tr>
+    <td><b>Max. Size</b></td>
+    <td><input type="text" name="maxSize" size="35" value="<%=maxSize%>"></td>
+    <td><i>Limit number of snapshots keep in memory. 0 = no limit.</i></td>
+</tr>
+<tr>
+    <td><b>Persisted</b></td>
+    <td><input type="checkbox" name="persisted" value="" checked></td>
+    <td><i>Should this snapshot be created for next JBoss reboot?</i></td>
+</tr>
+<tr>
+    <td><b>Enable Snapshot</b></td>
+    <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
+    <td><i>Should this snapshot be enabled.</i></td>
+</tr>
 </table>
 <input type="submit" value="Create">
 </form>
Index: varia/src/main/org/jboss/monitor/SnapshotRecordingMonitor.java
===================================================================
--- varia/src/main/org/jboss/monitor/SnapshotRecordingMonitor.java	(revision 75409)
+++ varia/src/main/org/jboss/monitor/SnapshotRecordingMonitor.java	(working copy)
@@ -41,25 +41,36 @@
  * @version $Revision$
  *
  **/
-public class SnapshotRecordingMonitor implements Runnable, SnapshotRecordingMonitorMBean, MBeanRegistration
+public class SnapshotRecordingMonitor extends ServiceMBeanSupport implements Runnable, SnapshotRecordingMonitorMBean
 {
    protected Logger log;
    protected String monitorName;
    protected ObjectName observedObject;
    protected String attribute;
-   protected boolean recording;
+   protected boolean enabled;
    protected long period;
    protected ArrayList history;
+   protected int maxSize;
    protected long startTime;
    protected long endTime;
    protected MBeanServer mbeanServer;
 
-   public SnapshotRecordingMonitor()
+   protected void startService() throws Exception
    {
+      super.startService();
       log = Logger.getLogger(monitorName);
       history = new ArrayList(100);
+      if (enabled)
+      {
+         startMonitorThread();
+      }
    }
 
+   protected void stopService()
+   {
+      enabled = false; // to shutdown monitor thread
+   }
+
    protected void startMonitorThread()
    {
       Thread t = new Thread(this, "JBoss JMX Attribute Snapshot " + monitorName);
@@ -96,13 +107,15 @@
       attribute = attr;
    }
 
-   public boolean isRecording() { return recording; }
-   public void setRecording(boolean start)
+   public boolean getEnabled() { return enabled; }
+   public void setEnabled(boolean start)
    {
-      if (start == recording) return;
-      recording = start;
+      if (start == enabled) return;
+      enabled = start;
 
-      if (start)
+      // only start monitor thread if mbean is started and
+      // we have a state change from enabled == false to enabled == true
+      if (start && getState() == STARTED)
       {
          startMonitorThread();
       }
@@ -118,25 +131,24 @@
       this.period = period;
    }
 
-   public ArrayList getData()
+   public int getMaxSize()
    {
-      return history;
+      return maxSize;
    }
 
-   public void clearData()
+   public void setMaxSize(int maxSize)
    {
-      history.clear();
+      this.maxSize = maxSize;
    }
 
-   public void startSnapshot()
+   public ArrayList getData()
    {
-      history.clear();
-      setRecording(true);
+      return history;
    }
 
-   public void endSnapshot()
+   public void clearData()
    {
-      recording = false;
+      history.clear();
    }
 
    public long getStartTime()
@@ -152,19 +164,24 @@
    public void run()
    {
       startTime = System.currentTimeMillis();
-      while (recording)
+      while (enabled)
       {
          try
          {
             Object value = mbeanServer.getAttribute(observedObject, attribute);
             history.add(value);
             endTime = System.currentTimeMillis();
+            if (maxSize > 0) {
+            	while (history.size() > maxSize) {
+            		history.remove(0);
+            	}
+            }
          }
          catch (Exception ex)
          {
             log.error(monitorName + " had error while monitoring", ex);
          }
-         if (recording)
+         if (enabled)
          {
             try
             {
Index: varia/src/main/org/jboss/monitor/SnapshotRecordingMonitorMBean.java
===================================================================
--- varia/src/main/org/jboss/monitor/SnapshotRecordingMonitorMBean.java	(revision 75409)
+++ varia/src/main/org/jboss/monitor/SnapshotRecordingMonitorMBean.java	(working copy)
@@ -22,8 +22,10 @@
 package org.jboss.monitor;
 
 import javax.management.ObjectName;
+
+import org.jboss.system.ServiceMBean;
+
 import java.util.ArrayList;
-import java.util.Date;
 
 /**
  * Comment
@@ -32,7 +34,7 @@
  * @version $Revision$
  *
  **/
-public interface SnapshotRecordingMonitorMBean
+public interface SnapshotRecordingMonitorMBean extends ServiceMBean
 {
    String getMonitorName();
 
@@ -50,17 +52,20 @@
 
    void setPeriod(long period);
 
+   int getMaxSize();
+
+   void setMaxSize(int maxSize);
+   
    ArrayList getData();
 
    void clearData();
 
-   void startSnapshot();
-
-   void endSnapshot();
-
    long getStartTime();
 
    long getEndTime();
-   boolean isRecording();
 
+   boolean getEnabled();
+
+   void setEnabled(boolean start);
+
 }
