[jboss-svn-commits] JBL Code SVN: r15402 - in labs/jbossesb/trunk/product/tools/console: management/src/main/java/org/jboss/soa/esb/monitoring and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Sep 27 08:22:47 EDT 2007


Author: tcunning
Date: 2007-09-27 08:22:47 -0400 (Thu, 27 Sep 2007)
New Revision: 15402

Added:
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collectcommands.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/invoke.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/manage.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/operations.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/results.jsp
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsBean.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsData.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/Invoker.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollector.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperation.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperationResult.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/Filer.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerAction.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerFactory.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/InvokerFiler.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsFiler.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsHelper.java
Modified:
   labs/jbossesb/trunk/product/tools/console/build.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/build.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/deployment.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/jbm-queue-service.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/jbmq-queue-service.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/jboss-esb.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/jboss-service.xml
   labs/jbossesb/trunk/product/tools/console/management-esb/src/main/resources/hsqldb/create_database.sql
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/attribute.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collect.jsp
   labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsBean.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsData.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollector.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFiler.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java
   labs/jbossesb/trunk/product/tools/console/management/src/main/resources/hsqldb/monitoring-mappings.hbm.xml
   labs/jbossesb/trunk/product/tools/console/management/src/main/resources/mysql/monitoring-mappings.hbm.xml
   labs/jbossesb/trunk/product/tools/console/management/src/main/resources/oracle/monitoring-mappings.hbm.xml
Log:
bug:JBESB-917
Add management console.


Modified: labs/jbossesb/trunk/product/tools/console/build.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/build.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/build.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -24,21 +24,21 @@
 <property name="testng.jar" value="${basedir}/lib/testng-4.5.1-jdk15.jar" />
 <property name="javac.debug" value="true" />
 <property name="javac.deprecation" value="false" />
-<property name="product.lib.ext.dir" location="../../lib/ext" />
+<property name="product.lib.ext.dir" location="../../lib/ext" />
 <property name="product.services.smooks.lib.ext.dir" location="../../services/smooks/lib/ext" />
 
 <fileset id="lib" dir="${lib.dir}">
 	<include name="*.jar" />
 </fileset>
-
-<fileset id="milyn" dir="${product.services.smooks.lib.ext.dir}" 
-	includes="milyn*.jar" />
 
+<fileset id="milyn" dir="${product.services.smooks.lib.ext.dir}" 
+	includes="milyn*.jar" />
+
 <fileset id="milyn-dependencies" dir="${product.lib.ext.dir}" 
 	includes="opencsv*.jar,ognl-*.jar,xbean.jar,xmlpublic.jar,groovy*.jar" />
 
 <path id="build.classpath">
-	<fileset refid="lib" />
+	<fileset refid="lib" />
 	<fileset refid="milyn" />
 	<fileset refid="milyn-dependencies" />
 </path>
@@ -153,7 +153,7 @@
 				<include name="antlr-*.jar"/>
 				<include name="commons-jci-*.jar"/>
 				<include name="stringtemplate-*.jar"/>
-			</fileset>
+			</fileset>
 			<fileset refid="milyn" />
 			<fileset refid="milyn-dependencies" />
 		</copy>
@@ -221,17 +221,9 @@
 
 		<copy file="${console.dir}/management-esb/src/main/resources/${db}/management-ds.xml"
 			todir="${org.jboss.esb.internal.dest}/${esb.server.name}/server/default/deploy" overwrite="true"/>
-		<copy file="${console.dir}/management-esb/src/main/resources/jbossesbmanagement-service.xml"
-                        todir="${org.jboss.esb.internal.dest}/${esb.server.name}/server/default/deploy"
-                        overwrite="true">
-                        <filterset>
-                                <filter token="db.datasource" value="${db.datasource}"/>
-                                <filter token="connection.datasource" value="${connection.datasource}"/>
-                        </filterset>
-                </copy>	
-                <copy file="${console.dir}/management-esb/build/management.esb"
-                        todir="${org.jboss.esb.internal.dest}/${esb.server.name}/server/default/deploy"
-                        overwrite="true"/>
+		<copy file="${console.dir}/management-esb/build/management.esb"
+			todir="${org.jboss.esb.internal.dest}/${esb.server.name}/server/default/deploy"
+			overwrite="true"/>
 	</target>
 	
 	<target name="explode" depends="jar,war,ear,datasource" 

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsBean.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsBean.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsBean.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,202 @@
+package org.jboss.soa.esb.monitoring;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * OperationsBean is a serializable bean that contains JMX Attribute information. 
+ * This data is passed in a command message from the OperationsCollector to the 
+ * OperationsFiler.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class OperationsBean implements Serializable {
+	private static final long serialVersionUID = -3039074516951343026L;
+	private String objectName;
+	private String attribute;
+	private String server;
+	private Date collectionTime; 
+	private String operation;
+	private String description;
+	private String returntype;
+	private Long id;
+	
+	/**
+	 * Constructor.
+	 * @param f_objectName object name
+	 * @param f_server server name
+	 * @param f_collectionTime collection date
+	 * @param f_operation operation
+	 * @param f_description operation description
+	 * @param f_returntype operation return type
+	 */
+	public OperationsBean(String f_objectName, String f_server, Date f_collectionTime, String f_operation,
+			String f_description, String f_returntype) {
+		operation = f_operation;
+		objectName = f_objectName;
+		server = f_server;
+		collectionTime = f_collectionTime;
+		description = f_description;
+		returntype = f_returntype;
+	}
+	
+	/**
+	 * Id name getter.
+	 * @return id id
+	 */
+	public Long getId() {
+		return id;
+	}
+	
+	/**
+	 * Id name mutator.
+	 * @param id id
+	 */
+	public void setId(Long id) {
+		this.id = id;
+	}
+	
+	/**
+	 * Attribute name getter.
+	 * @return attribute name
+	 */
+	public String getAttribute() {
+		return attribute;
+	}
+	
+	/**
+	 * Attribute name mutator.
+	 * @param attribute attribute name
+	 */
+	public void setAttribute(String attribute) {
+		this.attribute = attribute;
+	}
+	
+	/**
+	 * Collection time getter.
+	 * @return collection time
+	 */
+	public Date getCollectionTime() {
+		return collectionTime;
+	}
+	
+	/**
+	 * Collection time mutator.
+	 * @param collectionTime collection time
+	 */
+	public void setCollectionTime(Date collectionTime) {
+		this.collectionTime = collectionTime;
+	}
+	
+	/**
+	 * Object data getter.
+	 * @return data
+	 */
+	public String getOperation() {
+		return operation;
+	}
+	
+	/**
+	 * Object data mutator.
+	 * @param data data
+	 */
+	public void setOperation(String operation) {
+		this.operation = operation;
+	}
+	
+	/**
+	 * Object name getter.
+	 * @return object name
+	 */
+	public String getObjectName() {
+		return objectName;
+	}
+	
+	/**
+	 * Object name setter.
+	 * @param objectName object name
+	 */
+	public void setObjectName(String objectName) {
+		this.objectName = objectName;
+	}
+	
+	/**
+	 * Server name getter.
+	 * @return server name
+	 */
+	public String getServer() {
+		return server;
+	}
+	
+	/**
+	 * Server name mutator.
+	 * @param server server name
+	 */
+	public void setServer(String server) {
+		this.server = server;
+	}
+	
+	/**
+	 * Description name getter.
+	 * @return server name
+	 */
+	public String getDescription() {
+		return description;
+	}
+	
+	/**
+	 * Description name mutator.
+	 * @param server server name
+	 */
+	public void setDescription(String description) {
+		this.description = description;
+	}
+	
+	/**
+	 * Return type name getter.
+	 * @return server name
+	 */
+	public String getReturntype() {
+		return returntype;
+	}
+	
+	/**
+	 * Return type name mutator.
+	 * @param server server name
+	 */
+	public void setReturntype(String returntype) {
+		this.returntype = returntype;
+	}
+	
+	/* (non-Javadoc)
+	 * @see java.lang.Object#toString()
+	 */
+	public String toString() {
+		return "objectName[" + objectName +"] attribute[" + attribute
+			+ "] server[" + server + "] collectionTime[" + collectionTime 
+			+ "] operation[" + operation + "]";
+	}
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsData.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsData.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/OperationsData.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,68 @@
+package org.jboss.soa.esb.monitoring;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+/**
+ * OperationsData is a serializable collection of OperationsBeans.   The 
+ * OperationsData is object is the sole object that is passed in a command 
+ * message from the DataCollector to the DataFiler.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class OperationsData implements Serializable {
+	private static final Logger logger = Logger.getLogger(OperationsData.class);
+	private static final long serialVersionUID = -2081662961582149106L;
+	private List<OperationsBean> list;
+		
+	/**
+	 * Constructor which creates the list of StatisticsBeans.
+	 */
+	public OperationsData() {
+		list = new ArrayList<OperationsBean>();
+	}
+		
+	/**
+	 * List getter.
+	 * @return list
+	 */
+	public List getList() {
+		return list;
+	}
+			
+	/**
+	 * Method for printing all of the StatisticBean information.
+	 */
+	public void print() {
+		for (int i = 0; i < list.size(); i++) {
+			OperationsBean ob = list.get(i);
+			logger.debug(ob.toString());
+		}
+	}
+}

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsBean.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsBean.java	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsBean.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -171,7 +171,7 @@
 			objectData = ((Long) data).toString();
 		}
 		return "objectName[" + objectName +"] attribute[" + attribute
-			+ "] server[" + server + "collectionTime[" + collectionTime 
+			+ "] server[" + server + "] collectionTime[" + collectionTime 
 			+ "] type[" + type + "] object[" + objectData + "]";
 	}
 }

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsData.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsData.java	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsData.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -25,6 +25,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.log4j.Logger;
+
 /**
  * StatisticsData is a serializable collection of StatisticsBeans.   The 
  * StatisticsData is object is the sole object that is passed in a command 
@@ -35,6 +37,7 @@
  */
 public class StatisticsData implements Serializable {
 	private static final long serialVersionUID = -2081662961582149106L;
+	private static final Logger logger = Logger.getLogger(StatisticsData.class);
 	private List<StatisticsBean> list;
 	
 	/**
@@ -58,7 +61,7 @@
 	public void print() {
 		for (int i = 0; i < list.size(); i++) {
 			StatisticsBean sb = list.get(i);
-			System.out.println(sb.toString());
+			logger.debug(sb.toString());
 		}
 	}
 }

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollector.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollector.java	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollector.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -107,9 +107,9 @@
 				ObjectName on = (ObjectName) iter.next();
 				if (on.getKeyPropertyListString().contains(jmc.getKeyvalue())) {
 					list.add(on);
-					logger.info(jmc.getKeyvalue() + " matches " + on.getKeyPropertyListString());
+					logger.debug(jmc.getKeyvalue() + " matches " + on.getKeyPropertyListString());
 				} else {
-					logger.info(jmc.getKeyvalue() + " does not match " + on.getKeyPropertyListString());
+					logger.debug(jmc.getKeyvalue() + " does not match " + on.getKeyPropertyListString());
 				}
 			}
 		} catch (MalformedObjectNameException e) {

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/Invoker.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/Invoker.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/Invoker.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,53 @@
+package org.jboss.soa.esb.monitoring.client;
+
+import java.io.IOException;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.monitoring.OperationsBean;
+
+public class Invoker {
+	Logger logger = Logger.getLogger(Invoker.class);
+	private Context context;
+	private MBeanServerConnection server;
+	
+	public Invoker() {
+		try {
+			context = new InitialContext();
+			server = (MBeanServerConnection) context.lookup("jmx/invoker/RMIAdaptor");      
+		} catch (NamingException e) {
+			logger.error("", e);
+		}
+	}
+	
+	public Object invoke(OperationsBean obean) {
+		ObjectName on = null;
+		try {
+			on = new ObjectName(obean.getObjectName());
+			Object result = server.invoke(on, obean.getOperation(), null, null);
+			return result;
+		} catch (MalformedObjectNameException e) {
+			logger.error("", e);
+		} catch (NullPointerException e) {
+			logger.error("", e);
+		} catch (InstanceNotFoundException e) {
+			logger.error("", e);
+		} catch (MBeanException e) {
+			logger.error("", e);
+		} catch (ReflectionException e) {
+			logger.error("", e);
+		} catch (IOException e) {
+			logger.error("", e);
+		}
+		return null;
+	}
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,108 @@
+package org.jboss.soa.esb.monitoring.client;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.net.URI;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier;
+import org.jboss.soa.esb.actions.AbstractActionLifecycle;
+import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.couriers.CourierFactory;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.RegistryUtil;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.body.content.MessageBodyTypeNames;
+
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.monitoring.OperationsBean;
+import org.jboss.soa.esb.monitoring.pojo.JMXOperation;
+import org.jboss.soa.esb.monitoring.pojo.JMXOperationResult;
+
+/**
+ * The OperationsCollectorAction collects StatisticsData and then sends it to 
+ * the OperationsFilerService EPR for storage.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class InvokerAction extends AbstractActionLifecycle {
+	  protected ConfigTree  _config;
+	  private static Logger logger = Logger.getLogger(OperationsCollectorAction.class);
+	  public static String INTERNAL_CATEGORY = "JBossESB-Internal";
+	  public static String INVOKER_SERVICE_ACTION_NAME = "InvokerService";
+	  public static String INVOKERFILER_SERVICE_ACTION_NAME = "InvokerFilerService";
+
+	  public InvokerAction(ConfigTree config) { _config = config; }
+	  
+	/**
+	 * Action method which collects statistics and then delivers them to the data filer EPR.
+	 * @param message message
+	 * @return message
+	 * @throws Exception
+	 */
+	 public Message invokeOperation(Message message) throws Exception {
+		  if (message.getProperties().getProperty(MessageBodyTypeNames.COMMAND_TYPE) != null) {			
+			OperationsBean obean = (OperationsBean) message.getBody().get();
+			Invoker inv = new Invoker();
+			Object result = inv.invoke(obean);
+			JMXOperation jmxo = new JMXOperation(obean.getObjectName(), obean.getServer(),
+					obean.getOperation(), obean.getDescription(), obean.getReturntype(),
+					new Boolean(true));
+			jmxo.setId(obean.getId());
+			JMXOperationResult jmxor = new JMXOperationResult(jmxo,
+					obean.getServer(), new Date(), result.toString());
+			
+	        List list = RegistryUtil.getEprs(INTERNAL_CATEGORY, INVOKERFILER_SERVICE_ACTION_NAME);
+	        for (int i = 0; i < list.size(); i++) {
+	        	EPR epr = (EPR)list.get(i);
+	        	
+				Message esbMessage = MessageFactory.getInstance().getMessage();
+				esbMessage.getBody().add(jmxor);
+		        Call call = new Call();
+		        call.setMessageID(new URI(UUID.randomUUID().toString()));
+	        	esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.INVOKER_RESPONSE);
+		        
+	        	DeliverOnlyCourier sender = null;
+	        	try {
+		        	sender = CourierFactory.getCourier(epr);
+		        	URI uri = new URI(UUID.randomUUID().toString());
+		            esbMessage.getHeader().getCall().setMessageID(uri);
+		            sender.deliver(esbMessage);
+	        	} catch (Exception e) {
+	        		logger.error("", e);
+	        	} finally {
+	        		sender.cleanup();
+	        	}
+	        }
+		  } else {
+			  logger.error("DataCollectorAction received a message which was not a command message");
+			  message = null;
+		  }
+		  return message;
+	  }
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollector.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollector.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollector.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,148 @@
+package org.jboss.soa.esb.monitoring.client;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+import org.jboss.soa.esb.monitoring.MonitoringSessionFactory;
+import org.jboss.soa.esb.monitoring.OperationsBean;
+import org.jboss.soa.esb.monitoring.OperationsData;
+import org.jboss.soa.esb.monitoring.pojo.JMXPattern;
+
+public class OperationsCollector {
+
+	Logger logger = Logger.getLogger(OperationsCollector.class);
+	private Context context;
+	private MBeanServerConnection server;
+	private OperationsData data;
+	
+	public OperationsCollector() {
+		try {
+			context = new InitialContext();
+			server = (MBeanServerConnection) context.lookup("jmx/invoker/RMIAdaptor");      
+		} catch (NamingException e) {
+			logger.error("", e);
+		}
+		data = new OperationsData();
+	}
+	
+	public OperationsCollector(Context f_context) {
+		context = f_context;
+		try {
+			server = (MBeanServerConnection) context.lookup("jmx/invoker/RMIAdaptor");
+		} catch (NamingException e) {
+			logger.error("", e);
+		}      
+		data = new OperationsData();
+
+	}
+	
+	public MBeanServerConnection getServer() {
+		return server;
+	}
+	
+	public List getClassPatterns() {
+		Session sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+		sess.beginTransaction();
+		List result = sess.createQuery("from JMXPattern").list();
+		sess.close();
+		return result;
+	}
+	
+	public List<ObjectName> getObjectNames(JMXPattern jmc, MBeanServerConnection server) {		
+		List<ObjectName> list = new ArrayList<ObjectName>();
+		ObjectName namePattern;
+		try {
+			namePattern = new ObjectName(jmc.getClasspattern());
+			Set result = server.queryNames(namePattern, null);
+			Iterator iter = result.iterator();
+			while (iter.hasNext()) {
+				ObjectName on = (ObjectName) iter.next();
+				if (on.getKeyPropertyListString().contains(jmc.getKeyvalue())) {
+					list.add(on);
+					logger.debug(jmc.getKeyvalue() + " matches " + on.getKeyPropertyListString());
+				} else {
+					logger.debug(jmc.getKeyvalue() + " does not match " + on.getKeyPropertyListString());
+				}
+			}
+		} catch (MalformedObjectNameException e) {
+			logger.error("", e);
+		} catch (NullPointerException e) {
+			logger.error("", e);
+		} catch (IOException e) {
+			logger.error("", e);
+		}
+			
+		return list;
+	}	
+	
+	public void insertOperations(ObjectName on) {
+		String serverString = null; 
+		MBeanInfo  info = null;
+		Date date = new Date(System.currentTimeMillis());
+		InetAddress addr = null;
+		try {
+			addr = InetAddress.getLocalHost();
+			String jndiURLString = (String) context.getEnvironment().get(Context.PROVIDER_URL);
+			URL jndiURL = new URL("http://" + jndiURLString);
+			serverString = addr.getHostName() + ":" + jndiURL.getPort();
+		} catch (UnknownHostException e) {
+			logger.error("", e);
+		} catch (NamingException e) {
+			logger.error("", e);
+		} catch (MalformedURLException e) {
+			logger.error("", e);
+		}
+		
+		try {
+			info = server.getMBeanInfo(on);
+			MBeanOperationInfo[] moi = info.getOperations();
+			for (int i = 0; i < moi.length; i++) {
+				OperationsBean ob = new OperationsBean(on.toString(), serverString, 
+						date, moi[i].getName(), moi[i].getDescription(), 
+						moi[i].getReturnType());
+				if (moi[i].getSignature().length == 0) {
+					ArrayList<OperationsBean> list = (ArrayList<OperationsBean>) data.getList();
+					list.add(ob);
+				}
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+		}
+	}
+	
+	public void collectData() {
+		List jmxPatterns = getClassPatterns();
+		for (int i = 0; i < jmxPatterns.size(); i++) {
+			JMXPattern jmxc = (JMXPattern) jmxPatterns.get(i);
+			List<ObjectName> objectNames = getObjectNames(jmxc, server);
+			for (int j = 0; j < objectNames.size(); j++) {
+				ObjectName on = (ObjectName) objectNames.get(j);
+				insertOperations(on);
+			}
+		}
+	}
+	
+	public OperationsData getData() {
+		return data;
+	}
+	
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,103 @@
+package org.jboss.soa.esb.monitoring.client;
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.net.URI;
+import java.util.List;
+import java.util.UUID;
+
+import javax.naming.InitialContext;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier;
+import org.jboss.soa.esb.actions.AbstractActionLifecycle;
+import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.couriers.CourierFactory;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.RegistryUtil;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.body.content.MessageBodyTypeNames;
+
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.monitoring.OperationsData;
+
+/**
+ * The OperationsCollectorAction collects StatisticsData and then sends it to 
+ * the OperationsFilerService EPR for storage.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class OperationsCollectorAction extends AbstractActionLifecycle {
+	  protected ConfigTree  _config;
+	  private static Logger logger = Logger.getLogger(OperationsCollectorAction.class);
+	  public static String INTERNAL_CATEGORY = "JBossESB-Internal";
+	  public static String OPERATIONSCOLLECTORSERVICE_ACTION_NAME = "OperationsCollectorService";
+	  public static String OPERATIONSFILERSERVICE_ACTION_NAME = "OperationsFilerService";
+
+	  public OperationsCollectorAction(ConfigTree config) { _config = config; }
+	  
+	/**
+	 * Action method which collects statistics and then delivers them to the data filer EPR.
+	 * @param message message
+	 * @return message
+	 * @throws Exception
+	 */
+	 public Message collectOperations(Message message) throws Exception {
+		  if (message.getProperties().getProperty(MessageBodyTypeNames.COMMAND_TYPE) != null) {
+			InitialContext ic = new InitialContext();
+
+			OperationsCollector dcollector = new OperationsCollector(ic);
+			dcollector.collectData();
+			OperationsData data = dcollector.getData();
+			
+	        List list = RegistryUtil.getEprs(INTERNAL_CATEGORY, OPERATIONSFILERSERVICE_ACTION_NAME);
+	        for (int i = 0; i < list.size(); i++) {
+	        	EPR epr = (EPR)list.get(i);
+
+				Message esbMessage = MessageFactory.getInstance().getMessage();
+		        Call call = new Call();
+		        call.setMessageID(new URI(UUID.randomUUID().toString()));
+	        	esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.OPERATIONS_RESPONSE);
+		        esbMessage.getBody().add(data);
+		        data.print();
+		        
+	        	DeliverOnlyCourier sender = null;
+	        	try {
+		        	sender = CourierFactory.getCourier(epr);
+		        	URI uri = new URI(UUID.randomUUID().toString());
+		            esbMessage.getHeader().getCall().setMessageID(uri);
+		            sender.deliver(esbMessage);
+	        	} catch (Exception e) {
+	        		logger.error("", e);
+	        	} finally {
+	        		sender.cleanup();
+	        	}
+	        }
+		  } else {
+			  logger.error("DataCollectorAction received a message which was not a command message");
+			  message = null;
+		  }
+		  return message;
+	  }
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperation.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperation.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperation.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,185 @@
+package org.jboss.soa.esb.monitoring.pojo;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+/**
+ * POJO for storage of metadata concerning a JMX operation.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class JMXOperation  implements java.io.Serializable {
+
+	private static final long serialVersionUID = 1295239741130189196L;
+	private Long id;
+	private String objectname;
+	private String servername;
+	private String operation;
+	private String description;
+	private String returntype;
+	private Boolean activeflag;
+	
+    /**
+     * Constructor.
+     */
+    public JMXOperation() {
+    }
+
+    /**
+     * Constructor.
+     * @param objectname object name
+     * @param attribute attribute name
+     */
+    public JMXOperation(String objectname, String servername, String operation, String description,
+    		String returntype, Boolean activeflag) {
+       this.objectname = objectname;
+       this.operation = operation;
+       this.description = description;
+       this.returntype = returntype;
+       this.servername = servername;
+       this.activeflag = activeflag;
+    }
+   
+    /**
+     * Id getter.
+     * @return id
+     */
+    public Long getId() {
+        return this.id;
+    }
+    
+    /**
+     * Id mutator.
+     * @param id id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * Object name getter.
+     * @return object name
+     */
+    public String getObjectname() {
+        return this.objectname;
+    }
+    
+    /**
+     * Object name mutator.
+     * @param objectname object name
+     */
+    public void setObjectname(String objectname) {
+        this.objectname = objectname;
+    }
+    
+    /**
+     * Server name getter.
+     * @return object name
+     */
+    public String getServername() {
+        return this.servername;
+    }
+    
+    /**
+     * Server name mutator.
+     * @param objectname object name
+     */
+    public void setServername(String servername) {
+        this.servername = servername;
+    }
+
+    /**
+     * Operation name getter.
+     * @return operation name
+     */
+    public String getOperation() {
+        return this.operation;
+    }
+    
+    /**
+     * Operation name mutator.
+     * @param operation operation name
+     */
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+    
+    /**
+     * Description getter.
+     * @return description description
+     */
+    public String getDescription() {
+        return this.description;
+    }
+    
+    /**
+     * Description mutator.
+     * @param description description
+     */
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * Return type name getter.
+     * @return return type
+     */
+    public String getReturntype() {
+        return this.returntype;
+    }
+    
+    /**
+     * Return type mutator.
+     * @param returntype return type
+     */
+    public void setReturntype(String returntype) {
+        this.returntype = returntype;
+    }
+
+    /**
+     * Return type name getter.
+     * @return return type
+     */
+    public Boolean getActiveflag() {
+        return this.activeflag;
+    }
+    
+    /**
+     * Return type mutator.
+     * @param returntype return type
+     */
+    public void setActiveflag(Boolean active) {
+        this.activeflag = active;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+    	return 	"OBJECTNAME [" + objectname + "] SERVERNAME[" + servername
+    		+ "] OPERATION[" + operation + "] DESCRIPTION[" + description
+    		+ "] RETURNTYPE[" + returntype +"] ACTIVEFLAG[" + activeflag + "]";
+    }
+}
+
+

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperationResult.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperationResult.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXOperationResult.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,158 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.monitoring.pojo;
+
+import java.util.Date;
+
+/**
+ * POJO storing a JMX attribute's data on a specific server at a specific
+ * time.   The JMXData object stores the related attribute, the server name,
+ * the collection date and the data.    Only one of the
+ * timevalue/countvalue/textvalue are set - depending on what the type of the
+ * object is.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class JMXOperationResult implements java.io.Serializable {
+	
+	private static final long serialVersionUID = -1862113692118964270L;
+	private Long id;
+	private JMXOperation operation;
+	private String servername;
+	private Date statdate;
+	private String result;
+
+    /**
+     * Constructor.
+     */
+    public JMXOperationResult() {
+    }
+
+    /**
+     * Constructor.
+     * @param attribute attribute
+     * @param server server name 
+     * @param statdate statistic date
+     * @param timevalue time value
+     * @param countvalue count value 
+     * @param textvalue test value
+     */
+    public JMXOperationResult(JMXOperation operation, String servername, Date statdate, String result) {
+       this.operation = operation;
+       this.servername = servername;
+       this.statdate = statdate;
+       this.result = result;
+    }
+   
+    /**
+     * Id getter.
+     * @return id
+     */
+    public Long getId() {
+        return this.id;
+    }
+    
+    /**
+     * Id mutator. 
+     * @param id id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+    /**
+     * Attribute name getter.
+     * @return attribute name
+     */
+    public JMXOperation getOperation() {
+        return this.operation;
+    }
+    
+    /**
+     * Attribute name mutator.
+     * @param attribute attribute name
+     */
+    public void setOperation(JMXOperation operation) {
+        this.operation = operation;
+    }
+    
+    /**
+     * Server name getter.
+     * @return server name
+     */
+    public String getServername() {
+    	return servername;
+    }
+    
+    /**
+     * Server name mutator.
+     * @param f_server server name
+     */
+    public void setServername(String f_servername) {
+    	servername = f_servername;
+    }
+   
+    
+    /**
+     * Server name getter.
+     * @return server name
+     */
+    public String getResult() { 
+    	return result;
+    }
+    
+    /**
+     * Server name mutator.
+     * @param f_server server name
+     */
+    public void setResult(String f_result) {
+    	result = f_result;
+    }
+    
+    /**
+     * Stat date getter.
+     * @return stat date
+     */
+    public Date getStatdate() {
+        return this.statdate;
+    }
+    
+    /**
+     * Stat date mutator.
+     * @param statdate stat date
+     */
+    public void setStatdate(Date statdate) {
+        this.statdate = statdate;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+    	return "id [" + id + "] time[" + statdate + "] result[" + result + "] "
+    		+ "operation[" + operation + "]";
+    }
+
+}
+
+

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFiler.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFiler.java	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFiler.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -38,7 +38,7 @@
  * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
  * @since Version 4.2
  */
-public class DataFiler {
+public class DataFiler implements Filer {
 	private StatisticsData data;
 	private static final Logger logger = Logger.getLogger(DataFiler.class);
 	
@@ -57,6 +57,13 @@
 	}
 	
 	/**
+	 * @param f_data
+	 */
+	public void setData(Object f_data) {
+		data = (StatisticsData) f_data;
+	}
+	
+	/**
 	 * @param sess session 
 	 * @param objectname object name
 	 * @param attribute attribute name

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -62,10 +62,11 @@
 		logger.error("Collect statistics from EPRs");
 		List list;
 		try {
-			list = RegistryUtil.getEprs(DataFilerAction.INTERNAL_CATEGORY, DataFilerAction.DATACOLLECTORSERVICE_ACTION_NAME);
+			list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.DATA_COLLECTOR_SERVICE_ACTION_NAME);
 			if (list != null) {
 				for (int i = 0; i < list.size(); i++) {
 					EPR epr = (EPR)list.get(i); 
+					// Send message requesting performance data
 					Message esbMessage = MessageFactory.getInstance().getMessage();
 					sender = CourierFactory.getCourier(epr);
 					esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.STATISTICS_REQUEST); 
@@ -73,9 +74,25 @@
 					
 				    URI uri = new URI(UUID.randomUUID().toString());
 				    esbMessage.getHeader().getCall().setMessageID(uri);
-				    sender.deliver(esbMessage);				
+				    sender.deliver(esbMessage);				    
 				}
 			}
+			
+			list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.OPERATIONS_COLLECTOR_SERVICE_ACTION_NAME);			
+			if (list != null) {
+				for (int i = 0; i < list.size(); i++) {
+					EPR epr = (EPR)list.get(i); 
+					// Send message requesting operations data
+					Message opMessage = MessageFactory.getInstance().getMessage();
+					sender = CourierFactory.getCourier(epr);
+					opMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.OPERATIONS_REQUEST); 
+					opMessage.getBody().add(BytesBody.BYTES_LOCATION, "get statistics".getBytes());
+				
+					URI opURI = new URI(UUID.randomUUID().toString());
+					opMessage.getHeader().getCall().setMessageID(opURI);
+					sender.deliver(opMessage);
+				}
+			}
 		} catch (RegistryException e) {
 			logger.error("", e);
 		} catch (CourierException e) {

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/Filer.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/Filer.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/Filer.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,7 @@
+package org.jboss.soa.esb.monitoring.server;
+
+public interface Filer {	
+	public void persistData();
+	
+	public void setData(Object data);
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerAction.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerAction.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerAction.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,78 @@
+package org.jboss.soa.esb.monitoring.server;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.actions.AbstractActionLifecycle;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.body.content.MessageBodyTypeNames;
+
+/**
+ * FilerAction gets the object out of the body of the message and calls the 
+ * Filer to store that information.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class FilerAction extends AbstractActionLifecycle {
+	  protected ConfigTree  _config;
+
+	  private static final Logger logger = Logger.getLogger(FilerAction.class);
+	  public static String INTERNAL_CATEGORY = "JBossESB-Internal";
+	  public static String OPERATIONS_COLLECTOR_SERVICE_ACTION_NAME = "OperationsCollectorService";
+	  public static String OPERATIONS_FILER_SERVICE_ACTION_NAME = "OperationsFilerService";
+
+	  public static String DATA_COLLECTOR_SERVICE_ACTION_NAME = "DataCollectorService";
+	  public static String DATA_FILER_SERVICE_ACTION_NAME = "DataFilerService";
+	  
+	  public static String INVOKER_SERVICE_ACTION_NAME = "InvokerService";
+	  public static String INVOKERFILER_SERVICE_ACTION_NAME = "InvokerFilerService";
+
+	  
+	  public FilerAction(ConfigTree config) { _config = config; }
+
+	  /**
+	   * The action method which calls the DataFiler to persist the data
+	   * stored in the StatisticsData object.
+	   * 
+	   * @param message message
+	   * @return message
+	   * @throws Exception
+	   */
+	  public Message fileMessage(Message message) throws Exception {
+		  String commandType = (String) message.getProperties().getProperty(MessageBodyTypeNames.COMMAND_TYPE);
+		  if ((message.getProperties() != null) && (commandType != null)) {
+			  logger.debug("Filing data...");
+			  
+			  Filer df = FilerFactory.getInstance().getFiler(commandType);
+			  df.setData((Object) message.getBody().get());
+			  df.persistData();
+		  } else {
+			  logger.error("OperationsCollectorAction received a message which was not a command message");
+			  message = null;
+		  }
+		  return message;
+	  }
+}
+

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerFactory.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerFactory.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/FilerFactory.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,62 @@
+package org.jboss.soa.esb.monitoring.server;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import org.jboss.soa.esb.message.body.content.MessageBodyTypeNames;
+
+public class FilerFactory {
+	private static FilerFactory factory = null;
+	
+	/**
+	 * Private constructor.
+	 */
+	private FilerFactory () {	
+	}
+	
+	/**
+	 * Returns the instance of FilerFactory.
+	 * @return factory
+	 */
+	public static FilerFactory getInstance() {
+		if (factory == null) {
+			factory = new FilerFactory();
+		}
+		return factory;
+	}
+	
+	/**
+	 * Get the appropriate filer depending on the command type.
+	 * @param filerType filer type
+	 * @return filer
+	 */
+	public Filer getFiler(String filerType) {
+		if (MessageBodyTypeNames.STATISTICS_RESPONSE.equals(filerType)) {
+			return new DataFiler();
+		} else if (MessageBodyTypeNames.OPERATIONS_RESPONSE.equals(filerType)) {
+			return new OperationsFiler();
+		} else if (MessageBodyTypeNames.INVOKER_RESPONSE.equals(filerType)) {
+			return new InvokerFiler();
+		}
+		return null;
+	}
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/InvokerFiler.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/InvokerFiler.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/InvokerFiler.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,91 @@
+package org.jboss.soa.esb.monitoring.server;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.jboss.soa.esb.monitoring.MonitoringSessionFactory;
+import org.jboss.soa.esb.monitoring.pojo.JMXOperation;
+import org.jboss.soa.esb.monitoring.pojo.JMXOperationResult;
+
+/**
+ * InvokerFiler persists the JMXOperationResult.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class InvokerFiler implements Filer {
+	private static final Logger logger = Logger.getLogger(InvokerFiler.class);
+	JMXOperationResult jmxor = null;
+	
+	/**
+	 * Null constructor.
+	 */
+	public InvokerFiler() {
+		super();
+	}
+	
+	/**
+	 * Constructor
+	 * @param data operation result data
+	 */
+	public InvokerFiler(JMXOperationResult data) {
+		jmxor = data;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.jboss.soa.esb.monitoring.server.Filer#setData(java.lang.Object)
+	 */
+	public void setData(Object data) {
+		jmxor = (JMXOperationResult) data;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.jboss.soa.esb.monitoring.server.Filer#persistData()
+	 */
+	public void persistData() {
+		Session sess = null;
+		Transaction tx = null;
+		try {
+			sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+			tx = sess.beginTransaction();
+			JMXOperation jmxo = (JMXOperation) sess.load(JMXOperation.class, jmxor.getOperation().getId());
+			jmxor.setOperation(jmxo);
+			sess.save(jmxor);
+			tx.commit();
+
+		} catch (Exception e) {
+			logger.error("", e);
+		} finally {
+			if (tx.isActive()) {
+				tx.rollback();
+			} 
+			tx = null;
+			
+			sess.flush();
+			sess.close();
+			sess = null;
+		}
+	}
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsFiler.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsFiler.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsFiler.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,172 @@
+package org.jboss.soa.esb.monitoring.server;
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.jboss.soa.esb.monitoring.MonitoringSessionFactory;
+import org.jboss.soa.esb.monitoring.OperationsData;
+import org.jboss.soa.esb.monitoring.OperationsBean;
+import org.jboss.soa.esb.monitoring.pojo.JMXOperation;
+
+/**
+ * OperationsFiler converts the data from an OperationsData object to a JMXOperation
+ * and then persists the data.
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class OperationsFiler implements Filer {
+	private OperationsData data;
+	private static final Logger logger = Logger.getLogger(OperationsFiler.class);
+	
+	/**
+	 * Null argument constructor.
+	 */
+	public OperationsFiler() {
+	}
+	
+	/**
+	 * Constructor
+	 * @param data operations data
+	 */
+	public OperationsFiler(OperationsData data) {
+		this.data = data;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.jboss.soa.esb.monitoring.server.Filer#setData(java.lang.Object)
+	 */
+	public void setData(Object data) {
+		this.data = (OperationsData) data;
+	}
+	
+	/**
+	 * @param sess session 
+	 * @param objectname object name
+	 * @param attribute attribute name
+	 * @return JMXAttribute
+	 */
+	public JMXOperation getOperation(Session sess, String objectname, String operation) {
+		String query = "from JMXOperation jmxo "
+					+ "where objectname = :objectname and operation = :operation";
+				
+		List result = sess.createQuery(query)
+			.setString("objectname", objectname)
+			.setString("operation", operation).list();
+		
+		if (result.size() > 0) {
+			JMXOperation jmxo = (JMXOperation) result.get(0);
+			return jmxo;
+		}
+	 	return null;
+	}
+		
+	/**
+	 * Create a JMXAttribute object based on the StatisticBean info and stores it.
+	 * @param f_sb statistics bean
+	 */
+	public void insertOperations(OperationsBean f_ob) {
+		Session sess = null;
+		Transaction tx = null;
+		try {
+			sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+			tx = sess.beginTransaction();
+
+			JMXOperation oper = getOperation(sess, f_ob.getObjectName(), f_ob.getOperation());
+			if (oper == null) {
+				oper = new JMXOperation(f_ob.getObjectName(), f_ob.getServer(), f_ob.getOperation(),
+						f_ob.getDescription(), f_ob.getReturntype(), true);
+				sess.save(oper);
+			} else {
+				oper.setActiveflag(new Boolean(true));
+				sess.save(oper);
+			}
+			tx.commit();
+
+		} catch (Exception e) {
+			logger.error("", e);
+		} finally {
+			if (tx.isActive()) {
+				tx.rollback();
+			} 
+			tx = null;
+			
+			sess.flush();
+			sess.close();
+			sess = null;
+		}
+	}
+	
+	/**
+	 * The JMXOperation table contains a flag which represents whether the operation is 
+	 * valid - has the resource been undeployed.
+	 * @param serverName server name
+	 */
+	public void updateActiveFlag(String serverName) {
+		Session sess = null;
+		Transaction tx = null;
+		try {
+			sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+			tx = sess.beginTransaction();
+
+			String queryString= "update JMXOperation jo set jo.activeflag = false "
+					+ "where jo.servername = :server";
+			Query query = sess.createQuery(queryString);
+			query.setString("server", serverName);
+			query.executeUpdate();
+			tx.commit();
+		} catch (Exception e) {
+			logger.error("", e);
+		} finally {
+			if (tx.isActive()) {
+				tx.rollback();
+			} 
+			tx = null;
+			
+			sess.flush();
+			sess.close();
+			sess = null;
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.jboss.soa.esb.monitoring.server.Filer#persistData()
+	 */
+	public void persistData() {
+		if (data != null) {
+			List list = data.getList();
+			for (int i = 0; i < list.size(); i++) {
+				OperationsBean bean = (OperationsBean) list.get(i);
+				if ((i == 0) && (bean != null)) {
+					updateActiveFlag(bean.getServer());
+				}
+				insertOperations(bean);
+			}
+		}
+	}
+}

Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsHelper.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsHelper.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/OperationsHelper.java	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.monitoring.server;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SQLQuery;
+
+/**
+ * StatisticsHelper is a helper class which contains methods used in displaying
+ * stored JMX attribute information.  
+ * 
+ * @author <a href="mailto:tcunning at redhat.com">Tom Cunningham</a>
+ * @since Version 4.2
+ */
+public class OperationsHelper {
+	private static final Logger logger = Logger.getLogger(OperationsHelper.class);
+
+	/**
+	 * Select the distinct server names from the data.
+	 * @param sess hibernate session
+	 * @return list of distinct server names
+	 */
+	public static List getServerNames(Session sess) {
+		String query = "SELECT DISTINCT jmxo.servername "
+			+ "FROM JMXOperation jmxo";
+		List result = sess.createQuery(query).list();
+		return result;
+	}
+	
+	/**
+	 * Return the list of distinct ObjectNames for a specific server
+	 * @param sess hibernate session 
+	 * @param servername server name
+	 * @return list of distinct ObjectNames for a specific server
+	 */
+	public static List getObjectNamesForServer(Session sess, String servername) {
+		String query = "SELECT DISTINCT jmxo.objectname "
+			+ "FROM JMXOperation jmxo "
+			+ "WHERE jmxo.servername = :servername";
+		logger.debug(query);
+		SQLQuery sqlq = sess.createSQLQuery(query);
+		sqlq.setString("servername", servername);
+		List result = sqlq.list();
+		return result;
+	}
+	
+	/**
+	 * Return the list of operations for a specific server/objectName pair
+	 * @param sess hibernate session 
+	 * @param servername server name
+	 * @return list of distinct ObjectNames for a specific server
+	 */
+	public static List getOperations(Session sess, String serverName, String objectName) {
+		String query = "FROM JMXOperation jmxo "
+			+ "WHERE jmxo.servername = :servername "
+			+ "AND jmxo.objectname = :objectname "
+			+ "AND jmxo.activeflag = true";
+		logger.debug(query);
+		Query q = sess.createQuery(query);
+		q.setString("servername", serverName);
+		q.setString("objectname", objectName);
+		List result = q.list();
+		return result;
+	}
+	
+	/**
+	 * Return the list of invocation results for a specific server
+	 * @param sess hibernate session 
+	 * @param servername server name
+	 * @return list of distinct ObjectNames for a specific server
+	 */
+	public static List getOperationResults(Session sess, String serverName) {
+		String query = "FROM JMXOperationResult jmxr "
+			+ "WHERE jmxr.servername = :servername "
+			+ "ORDER BY jmxr.statdate";
+		logger.debug(query);
+		Query q = sess.createQuery(query);
+		q.setString("servername", serverName);
+		List result = q.list();
+		return result;
+	}
+}

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/resources/hsqldb/monitoring-mappings.hbm.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/resources/hsqldb/monitoring-mappings.hbm.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/resources/hsqldb/monitoring-mappings.hbm.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -22,11 +22,31 @@
 		<property name="countvalue" type="java.lang.Integer" column="countvalue"/>
 		<property name="textvalue" type="java.lang.String" column="textvalue"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperationResult" table="JMXOPERATIONRESULT">
+		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<many-to-one name="operation" column="OPID"/>
+		<property name="servername" type="java.lang.String" column="SERVER"/>
+		<property name="statdate" type="timestamp" column="STATDATE"/>
+		<property name="result" type="java.lang.String" column="RESULT"/>
+	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXAttribute" table="JMXATTRIBUTE">
-                <id name="id" column="statid" type="java.lang.Long" unsaved-value="0">
+		<id name="id" column="statid" type="java.lang.Long" unsaved-value="0">
 			<generator class="native"/>
 		</id>	
 		<property name="objectname" type="java.lang.String" column="objectname"/>
 		<property name="attribute" type="java.lang.String" column="attribute"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperation" table="JMXOPERATION">
+		<id name="id" column="opid" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<property name="objectname" type="java.lang.String" column="objectname"/>
+		<property name="operation" type="java.lang.String" column="operation"/>
+		<property name="description" type="java.lang.String" column="description"/>
+		<property name="returntype" type="java.lang.String" column="returntype"/>
+		<property name="servername" type="java.lang.String" column="servername"/>
+		<property name="activeflag" type="java.lang.Boolean" column="activeflag"/>
+	</class>
 </hibernate-mapping>

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/resources/mysql/monitoring-mappings.hbm.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/resources/mysql/monitoring-mappings.hbm.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/resources/mysql/monitoring-mappings.hbm.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -22,6 +22,15 @@
 		<property name="countvalue" type="java.lang.Integer" column="countvalue"/>
 		<property name="textvalue" type="java.lang.String" column="textvalue"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperationResult" table="JMXOPERATIONRESULT">
+		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<many-to-one name="attribute" column="STATID"/>
+		<property name="server" type="java.lang.String" column="SERVER"/>
+		<property name="statdate" type="timestamp" column="STATDATE"/>
+		<property name="result" type="java.lang.String" column="RESULT"/>
+	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXAttribute" table="JMXATTRIBUTE">
                 <id name="id" column="statid" type="java.lang.Long" unsaved-value="0">
 			<generator class="native"/>
@@ -29,4 +38,11 @@
 		<property name="objectname" type="java.lang.String" column="objectname"/>
 		<property name="attribute" type="java.lang.String" column="attribute"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperation" table="JMXOPERATION">
+		<id name="id" column="opid" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<property name="objectname" type="java.lang.String" column="objectname"/>
+		<property name="operation" type="java.lang.String" column="attribute"/>
+	</class>
 </hibernate-mapping>

Modified: labs/jbossesb/trunk/product/tools/console/management/src/main/resources/oracle/monitoring-mappings.hbm.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/resources/oracle/monitoring-mappings.hbm.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/resources/oracle/monitoring-mappings.hbm.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -26,6 +26,15 @@
 		<property name="countvalue" type="java.lang.Integer" column="countvalue"/>
 		<property name="textvalue" type="java.lang.String" column="textvalue"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperationResult" table="JMXOPERATIONRESULT">
+		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<many-to-one name="operation" column="OPID"/>
+		<property name="server" type="java.lang.String" column="SERVER"/>
+		<property name="statdate" type="timestamp" column="STATDATE"/>
+		<property name="result" type="java.lang.String" column="RESULT"/>
+	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXAttribute" table="JMXATTRIBUTE">
                 <id name="id" column="statid" type="long">
 			<generator class="sequence">	
@@ -35,4 +44,11 @@
 		<property name="objectname" type="java.lang.String" column="objectname"/>
 		<property name="attribute" type="java.lang.String" column="attribute"/>
 	</class>
+	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperation" table="JMXOPERATION">
+		<id name="id" column="opid" type="java.lang.Long" unsaved-value="0">
+			<generator class="native"/>
+		</id>	
+		<property name="objectname" type="java.lang.String" column="objectname"/>
+		<property name="operation" type="java.lang.String" column="attribute"/>
+	</class>
 </hibernate-mapping>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/build.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/build.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/build.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -73,10 +73,23 @@
 		description="Build the management ESB">
 		<mkdir dir="${mgmt.esb.dir}/build"/>	
 		<mkdir dir="${mgmt.esb.dir}/build/META-INF"/>
+
+		<copy file="${mgmt.esb.dir}/src/main/resources/jbossesbmanagement-service.xml"
+			todir="${mgmt.esb.dir}/build"
+			overwrite="true">
+			<filterset>
+				<filter token="db.datasource" value="${db.datasource}"/>
+				<filter token="connection.datasource" value="${connection.datasource}"/>
+			</filterset>
+		</copy>
+
 		<jar destfile="${mgmt.esb.dir}/build/management.esb">
 			<fileset dir="${mgmt.esb.dir}">
 				<include name="${jms.service.file}"/>
 			</fileset>
+			<fileset dir="${mgmt.esb.dir}/build">
+				<include name="jbossesbmanagement-service.xml"/>
+			</fileset>
 			<fileset dir="${build.dir}">
 				<include name="META-INF/**"/>
 			</fileset>
@@ -98,13 +111,5 @@
 	
 	<target name="deploy" depends="esb,copy-datasource" description="Deploy the WAR">
 		<copy file="${mgmt.esb.dir}/build/management.esb" todir="${org.jboss.esb.server.home}/server/default/deploy" overwrite="true"/>
-                <copy file="${mgmt.esb.dir}/src/main/resources/jbossesbmanagement-service.xml"	
-			todir="${org.jboss.esb.server.home}/server/default/deploy"	
-			overwrite="true">
-			<filterset>
-                                <filter token="db.datasource" value="${db.datasource}"/>
-				<filter token="connection.datasource" value="${connection.datasource}"/>
-                        </filterset>
-		</copy>
 	</target> 
 </project>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/deployment.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/deployment.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/deployment.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -1,3 +1,5 @@
 <jbossesb-deployment>
-  <depends>jboss.esb.quickstart.destination:service=Queue,name=DataFilerQueue</depends>
+  <depends>jboss.esb.console.destination:service=Queue,name=DataFilerQueue</depends>
+  <depends>jboss.esb.console.destination:service=Queue,name=OperationsFilerQueue</depends>
+  <depends>jboss.esb.console.destination:service=Queue,name=InvokerFilerQueue</depends>
 </jbossesb-deployment>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/jbm-queue-service.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/jbm-queue-service.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/jbm-queue-service.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -1,9 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <server>
   <mbean code="org.jboss.jms.server.destination.QueueService"
-    name="jboss.esb.quickstart.destination:service=Queue,name=DataFilerQueue"
+    name="jboss.esb.console.destination:service=Queue,name=DataFilerQueue"
     xmbean-dd="xmdesc/Queue-xmbean.xml">
 	<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
 	<depends>jboss.messaging:service=PostOffice</depends>
   </mbean>
+  <mbean code="org.jboss.jms.server.destination.QueueService"
+    name="jboss.esb.console.destination:service=Queue,name=OperationsFilerQueue"
+    xmbean-dd="xmdesc/Queue-xmbean.xml">
+	<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+	<depends>jboss.messaging:service=PostOffice</depends>
+  </mbean>
+    <mbean code="org.jboss.jms.server.destination.QueueService"
+    name="jboss.esb.console.destination:service=Queue,name=InvokerFilerQueue"
+    xmbean-dd="xmdesc/Queue-xmbean.xml">
+	<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+	<depends>jboss.messaging:service=PostOffice</depends>
+  </mbean>
 </server>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/jbmq-queue-service.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/jbmq-queue-service.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/jbmq-queue-service.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -1,9 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <server>
   <mbean code="org.jboss.mq.server.jmx.Queue"
-    name="jboss.esb.quickstart.destination:service=Queue,name=DataFilerQueue">
+    name="jboss.esb.console.destination:service=Queue,name=DataFilerQueue">
     <depends optional-attribute-name="DestinationManager">
       jboss.mq:service=DestinationManager
     </depends>
   </mbean>
+  <mbean code="org.jboss.mq.server.jmx.Queue"
+    name="jboss.esb.console.destination:service=Queue,name=OperationsFilerQueue">
+    <depends optional-attribute-name="DestinationManager">
+      jboss.mq:service=DestinationManager
+    </depends>
+  </mbean>
+  <mbean code="org.jboss.mq.server.jmx.Queue"
+    name="jboss.esb.console.destination:service=Queue,name=InvokerFilerQueue">
+    <depends optional-attribute-name="DestinationManager">
+      jboss.mq:service=DestinationManager
+    </depends>
+  </mbean>
 </server>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/jboss-esb.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/jboss-esb.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/jboss-esb.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -11,6 +11,18 @@
                       dest-name="queue/DataFilerQueue"
                   />
               </jms-bus>
+			 <jms-bus busid="OperationsFilerChannel">
+                  <jms-message-filter
+                      dest-type="QUEUE"
+                      dest-name="queue/OperationsFilerQueue"
+                  />
+              </jms-bus>
+			  <jms-bus busid="InvokerFilerChannel">
+                  <jms-message-filter
+                      dest-type="QUEUE"
+                      dest-name="queue/InvokerFilerQueue"
+                  />
+              </jms-bus>
           </jms-provider>
       </providers>
       
@@ -26,11 +38,46 @@
                 />
             </listeners>
             <actions>
-                   <action name="datafileraction" 
-                   	class="org.jboss.soa.esb.monitoring.server.DataFilerAction" 
+                   <action name="data
+				   fileraction" 
+                   	class="org.jboss.soa.esb.monitoring.server.FilerAction" 
                    	process="fileMessage" 
                    	/>      
             </actions>
         </service>
+		<service 
+        	category="JBossESB-Internal" 
+        	name="OperationsFilerService" 
+        	description="Service that files data into the database">
+            <listeners>
+                <jms-listener name="JMS-DFListener"
+                    busidref="OperationsFilerChannel"
+                    maxThreads="1"
+                />
+            </listeners>
+            <actions>
+                   <action name="operationsfileraction" 
+                   	class="org.jboss.soa.esb.monitoring.server.FilerAction" 
+                   	process="fileMessage" 
+                   	/>      
+            </actions>
+        </service>
+		<service 
+        	category="JBossESB-Internal" 
+        	name="InvokerFilerService" 
+        	description="Service that files data into the database">
+            <listeners>
+                <jms-listener name="JMS-DFListener"
+                    busidref="InvokerFilerChannel"
+                    maxThreads="1"
+                />
+            </listeners>
+            <actions>
+                   <action name="operationsresultfileraction" 
+                   	class="org.jboss.soa.esb.monitoring.server.FilerAction" 
+                   	process="fileMessage" 
+                   	/>      
+            </actions>
+        </service>
       </services>
-</jbossesb>
\ No newline at end of file
+</jbossesb>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/jboss-service.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/jboss-service.xml	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/jboss-service.xml	2007-09-27 12:22:47 UTC (rev 15402)
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <server>
+  <mbean code="org.jboss.soa.esb.monitoring.client.OperationsResultFilerService"
+		name="jboss.esb:service=OperationsResultFilerService">
+  </mbean>
+  <mbean code="org.jboss.soa.esb.monitoring.client.OperationsFilerService"
+		name="jboss.esb:service=OperationsFilerService">
+  </mbean>
   <mbean code="org.jboss.soa.esb.monitoring.client.DataFilerService"
         name="jboss.esb:service=DataFilerService">
   </mbean>

Modified: labs/jbossesb/trunk/product/tools/console/management-esb/src/main/resources/hsqldb/create_database.sql
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-esb/src/main/resources/hsqldb/create_database.sql	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-esb/src/main/resources/hsqldb/create_database.sql	2007-09-27 12:22:47 UTC (rev 15402)
@@ -14,6 +14,28 @@
 CONSTRAINT UNIQUE_ATTR UNIQUE (OBJECTNAME, ATTRIBUTE)
 );
 
+CREATE TABLE JMXOPERATION (
+OPID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,
+OBJECTNAME VARCHAR(255) NOT NULL,
+OPERATION VARCHAR(255) NOT NULL,
+DESCRIPTION VARCHAR(255) NOT NULL,
+RETURNTYPE VARCHAR(255) NOT NULL,
+SERVERNAME VARCHAR(255) NOT NULL,
+ACTIVEFLAG BOOLEAN NOT NULL,
+CONSTRAINT UNIQUE_OPID UNIQUE(OPID),
+CONSTRAINT UNIQUE_OPER UNIQUE (SERVERNAME, OBJECTNAME, OPERATION)
+);
+
+CREATE TABLE JMXOPERATIONRESULT (
+ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,
+OPID INTEGER,
+SERVER VARCHAR(255),
+STATDATE TIMESTAMP,
+RESULT VARCHAR(255),
+CONSTRAINT UNIQUE_RESULT UNIQUE(OPID, STATDATE),
+CONSTRAINT FK_OPRESULT FOREIGN KEY(OPID) REFERENCES JMXATTRIBUTE
+);
+
 CREATE TABLE JMXDATA (
 ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,
 STATID INTEGER,
@@ -22,6 +44,6 @@
 TIMEVALUE FLOAT,
 COUNTVALUE INT,
 TEXTVALUE VARCHAR(255),
-CONSTRAINT UNIQUE_DATA UNIQUE(STATID, STATDATE), 
+CONSTRAINT UNIQUE_DATA UNIQUE(STATID, SERVER, STATDATE), 
 CONSTRAINT FK_ATTRIBUTE FOREIGN KEY(STATID) REFERENCES JMXATTRIBUTE
 );

Modified: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/attribute.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/attribute.jsp	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/attribute.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -14,11 +14,19 @@
 	org.jfree.data.time.Minute,
 	org.jfree.chart.JFreeChart
 "%>
+<%! 
+	private static int imagecounter = 0;
+%>
+<%
+response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+response.setHeader("Pragma","no-cache"); //HTTP 1.0
+response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
 <html>
 <head>
+   <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    <title>JBoss ESB Monitoring Console</title>
    <link rel="stylesheet" href="style_master.css" type="text/css">
-   <meta http-equiv="cache-control" content="no-cache">
 </head>
 <body>
    <table>
@@ -28,8 +36,10 @@
          <h1>JBoss ESB Management Console</h1>
          </td>
       </tr>
+	</table>
+	<table cellpadding="5">
       <tr>
-      	<td></td>
+      	<td><a href="/jbossesb/operations.jsp">Management</a></td>
       	<td><a href="/jbossesb">Back to Console index</a></td>
    </table>
 <hr>
@@ -80,7 +90,7 @@
 	if ((attributeType == StatisticsHelper.COUNT_ATTRIBUTE)
 			|| (attributeType == StatisticsHelper.BYTES_ATTRIBUTE) 
 			|| (attributeType == StatisticsHelper.TIME_ATTRIBUTE)) {
-	String image = "image-" + session.getId() + ".jpg";
+	String image = "image-" + session.getId() + "-" + imagecounter++ + ".jpg";
 	String realFile = session.getServletContext().getRealPath("") + File.separator 
 		+ image;
 	File file = new File(realFile);

Modified: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collect.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collect.jsp	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collect.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -9,12 +9,12 @@
 		org.jboss.soa.esb.message.Message,
 		org.jboss.soa.esb.message.body.content.MessageBodyTypeNames,
 		org.jboss.soa.esb.message.format.MessageFactory,
-		org.jboss.soa.esb.monitoring.server.DataFilerAction,
+		org.jboss.soa.esb.monitoring.server.FilerAction,
 		java.net.URI,
 		java.util.*
 "%>
 <%
-List list = RegistryUtil.getEprs(DataFilerAction.INTERNAL_CATEGORY, DataFilerAction.DATACOLLECTORSERVICE_ACTION_NAME);
+List list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.DATA_COLLECTOR_SERVICE_ACTION_NAME);
 if (list != null) {
 	for (int i = 0; i < list.size(); i++) {
 		EPR epr = (EPR)list.get(i); 
@@ -22,7 +22,7 @@
 		DeliverOnlyCourier sender = CourierFactory.getCourier(epr);
 		esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.STATISTICS_REQUEST); 
 
-		esbMessage.getBody().add(BytesBody.BYTES_LOCATION, "get statistics".getBytes());
+		esbMessage.getBody().add(BytesBody.BYTES_LOCATION, MessageBodyTypeNames.STATISTICS_REQUEST.getBytes());
 		
 	    URI uri = new URI(UUID.randomUUID().toString());
 	    esbMessage.getHeader().getCall().setMessageID(uri);

Added: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collectcommands.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collectcommands.jsp	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/collectcommands.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,37 @@
+<%@page import="org.jboss.soa.esb.message.body.content.BytesBody"%>
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ page session="true" %>
+<%@ page import="
+		org.jboss.soa.esb.addressing.EPR,
+		org.jboss.soa.esb.couriers.CourierFactory,
+		org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier,
+		org.jboss.soa.esb.listeners.RegistryUtil,
+		org.jboss.soa.esb.message.Message,
+		org.jboss.soa.esb.message.body.content.MessageBodyTypeNames,
+		org.jboss.soa.esb.message.format.MessageFactory,
+		org.jboss.soa.esb.monitoring.server.FilerAction,
+		java.net.URI,
+		java.util.*
+"%>
+<%
+List list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.DATA_COLLECTOR_SERVICE_ACTION_NAME);
+if (list != null) {
+	for (int i = 0; i < list.size(); i++) {
+		EPR epr = (EPR)list.get(i); 
+		Message esbMessage = MessageFactory.getInstance().getMessage();
+		DeliverOnlyCourier sender = CourierFactory.getCourier(epr);
+		esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.STATISTICS_REQUEST); 
+
+		esbMessage.getBody().add(BytesBody.BYTES_LOCATION, MessageBodyTypeNames.STATISTICS_REQUEST.getBytes());
+		
+	    URI uri = new URI(UUID.randomUUID().toString());
+	    esbMessage.getHeader().getCall().setMessageID(uri);
+	    sender.deliver(esbMessage);
+	
+	}
+}
+
+RequestDispatcher disp;
+disp = getServletContext().getRequestDispatcher("/index.jsp"); 
+disp.forward(request, response);
+%>
\ No newline at end of file

Modified: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp	2007-09-27 12:18:46 UTC (rev 15401)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -22,6 +22,11 @@
          <h1>JBoss ESB Management Console</h1>
          </td>
       </tr>
+    </table>
+    <table cellpadding="5"/>
+      <tr>
+      	<td><a href="/jbossesb/operations.jsp">Management</a></td>
+      </tr>
    </table>
 <hr>
 	<form action="collect.jsp" method="post">

Added: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/invoke.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/invoke.jsp	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/invoke.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,92 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ page session="true" %>
+<%@ page import="
+		org.jboss.soa.esb.addressing.EPR,
+		org.jboss.soa.esb.couriers.CourierFactory,
+		org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier,
+		org.jboss.soa.esb.listeners.RegistryUtil,
+		org.jboss.soa.esb.message.Message,
+		org.jboss.soa.esb.message.body.content.MessageBodyTypeNames,
+		org.jboss.soa.esb.message.format.MessageFactory,
+		java.net.URI,	
+		java.util.List,
+		java.util.UUID,
+		org.hibernate.Session,
+		org.hibernate.Transaction,
+		org.jboss.soa.esb.monitoring.MonitoringSessionFactory,
+		org.jboss.soa.esb.monitoring.OperationsBean,
+		org.jboss.soa.esb.monitoring.pojo.*,
+		org.jboss.soa.esb.monitoring.server.FilerAction
+"%>
+<html>
+<head>
+   <title>JBoss ESB Monitoring Console</title>
+   <link rel="stylesheet" href="style_master.css" type="text/css">
+   <meta http-equiv="cache-control" content="no-cache">
+</head>
+<body>
+   <table>
+      <tr>
+         <td><img src="images/logo.gif" align="left" border="0" alt="JBoss"></td>
+         <td valign="middle">         
+         <h1>JBoss ESB Management Console</h1>
+         </td>
+      </tr>
+      </table>
+      <table cellpadding="5">
+      <tr>
+      	<td><a href="/jbossesb/">Monitoring</a></td>
+      	<td><a href="/jbossesb/results.jsp">View invocation results</a></td>
+      </tr>
+   </table>
+<hr>
+<%
+String idString = request.getParameter("id");
+Long id = new Long(idString);
+Session sess = null;
+Transaction tx = null;
+OperationsBean obean = null;
+try {
+	sess = MonitoringSessionFactory.getInstance().openSession();
+	tx = sess.beginTransaction();
+	
+	JMXOperation jmxo = (JMXOperation) sess.load(JMXOperation.class, id);
+	obean = new OperationsBean(jmxo.getObjectname(), jmxo.getServername(), null, 
+			jmxo.getOperation(), jmxo.getDescription(), jmxo.getReturntype());
+	obean.setId(id);
+	tx.commit();
+	
+} catch (Exception e) {
+	e.printStackTrace();
+} finally {
+	if (tx.isActive()) {
+		tx.rollback();
+	} 
+	tx = null;
+	
+	sess.flush();
+	sess.close();
+	sess = null;
+}
+
+List list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.INVOKER_SERVICE_ACTION_NAME);
+if (list != null) {
+	for (int i = 0; i < list.size(); i++) {
+		EPR epr = (EPR)list.get(i); 
+		Message esbMessage = MessageFactory.getInstance().getMessage();
+		DeliverOnlyCourier sender = CourierFactory.getCourier(epr);
+		esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.INVOKER_REQUEST); 
+		esbMessage.getBody().add(obean);
+		
+	    URI uri = new URI(UUID.randomUUID().toString());
+	    esbMessage.getHeader().getCall().setMessageID(uri);
+	    sender.deliver(esbMessage);
+	
+	}
+}
+
+RequestDispatcher disp;
+disp = getServletContext().getRequestDispatcher("/operations.jsp"); 
+disp.forward(request, response);
+%>
+</html>
\ No newline at end of file

Added: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/manage.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/manage.jsp	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/manage.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,38 @@
+<%@page import="org.jboss.soa.esb.message.body.content.BytesBody"%>
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ page session="true" %>
+<%@ page import="
+		org.jboss.soa.esb.addressing.EPR,
+		org.jboss.soa.esb.couriers.CourierFactory,
+		org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier,
+		org.jboss.soa.esb.listeners.RegistryUtil,
+		org.jboss.soa.esb.message.Message,
+		org.jboss.soa.esb.message.body.content.MessageBodyTypeNames,
+		org.jboss.soa.esb.message.format.MessageFactory,
+		org.jboss.soa.esb.monitoring.client.OperationsCollectorAction,
+		java.net.URI,
+		java.util.*,
+		java.util.List
+"%>
+<%
+List list = RegistryUtil.getEprs(OperationsCollectorAction.INTERNAL_CATEGORY, OperationsCollectorAction.OPERATIONSCOLLECTORSERVICE_ACTION_NAME);
+if (list != null) {
+	for (int i = 0; i < list.size(); i++) {
+		EPR epr = (EPR)list.get(i); 
+		Message esbMessage = MessageFactory.getInstance().getMessage();
+		DeliverOnlyCourier sender = CourierFactory.getCourier(epr);
+		esbMessage.getProperties().setProperty(MessageBodyTypeNames.COMMAND_TYPE, MessageBodyTypeNames.OPERATIONS_REQUEST); 
+
+		esbMessage.getBody().add(BytesBody.BYTES_LOCATION, MessageBodyTypeNames.OPERATIONS_REQUEST.getBytes());
+		
+	    URI uri = new URI(UUID.randomUUID().toString());
+	    esbMessage.getHeader().getCall().setMessageID(uri);
+	    sender.deliver(esbMessage);
+	
+	}
+}
+
+RequestDispatcher disp;
+disp = getServletContext().getRequestDispatcher("/operations.jsp"); 
+disp.forward(request, response);
+%>
\ No newline at end of file

Added: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/operations.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/operations.jsp	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/operations.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,95 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ page session="true" %>
+<%@ page import="
+	java.util.List,
+	org.hibernate.Session,
+	org.hibernate.Transaction,
+	org.jboss.soa.esb.monitoring.MonitoringSessionFactory,
+	org.jboss.soa.esb.monitoring.pojo.*,
+	org.jboss.soa.esb.monitoring.server.StatisticsHelper,
+	org.jboss.soa.esb.monitoring.server.OperationsHelper
+"%>
+<html>
+<head>
+   <title>JBoss ESB Management Console</title>
+   <link rel="stylesheet" href="style_master.css" type="text/css">
+   <meta http-equiv="cache-control" content="no-cache">
+</head>
+<body>
+   <table>
+      <tr>
+         <td><img src="images/logo.gif" align="left" border="0" alt="JBoss"></td>
+         <td valign="middle">         
+         <h1>JBoss ESB Management Console</h1>
+         </td>
+      </tr>
+    </table>
+    <table cellpadding="5">
+      <tr>
+      	<td><a href="/jbossesb/">Monitoring</a></td>
+      	<td><a href="/jbossesb/results.jsp">Operation Invocation Results</a></td>
+      </tr>
+   </table>
+<hr>
+	<form action="manage.jsp" method="post">
+	<nobr>
+ 	Current polling interval is <b><code><%=StatisticsHelper.getCollectionInterval()%></code></b> minutes.
+	  <input type="submit" value="Collect Operations"/>
+	</nobr>
+	</form>
+<%
+Session sess = null;
+Transaction tx = null;
+try {
+	sess = MonitoringSessionFactory.getInstance().openSession();
+	tx = sess.beginTransaction();
+	List serverNames = OperationsHelper.getServerNames(sess);
+	for (int i = 0; i<serverNames.size(); i++) {
+		String serverName = (String) serverNames.get(i);
+%>
+<hr>
+	<h1><code><%=serverName%></code></h1>
+<% 
+		List objectNames = OperationsHelper.getObjectNamesForServer(sess, serverName);
+		for (int j = 0; j < objectNames.size(); j++) {
+			String objectName= (String) objectNames.get(j);
+		%>
+		<li><b><%=objectName%></b></li>
+		<ul>
+		<%
+		List operations = OperationsHelper.getOperations(sess, serverName, objectName);
+		for (int k = 0; k < operations.size(); k++) {
+			JMXOperation jmxoper = (JMXOperation) operations.get(k);
+			String operation = jmxoper.getReturntype() + " " +  jmxoper.getOperation() 
+				+ " (" + jmxoper.getDescription() + ")";
+			%>
+			<li><a href="invoke.jsp?id=<%=jmxoper.getId()%>"><%=operation%></a></li>
+			<%
+		}
+		%>
+		</ul>
+		<%
+	}
+
+}
+
+	if (serverNames.size() == 0) {
+		%>
+		No operations found in database.
+		<% 
+	}
+} catch (Exception e) {
+	e.printStackTrace();
+} finally {
+	if (tx.isActive()) {
+		tx.rollback();
+	} 
+	tx = null;
+	
+	sess.flush();
+	sess.close();
+	sess = null;
+}
+%>
+</body>
+</html>

Added: labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/results.jsp
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/results.jsp	                        (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/results.jsp	2007-09-27 12:22:47 UTC (rev 15402)
@@ -0,0 +1,87 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+<%@ page session="true" %>
+<%@ page import="
+	java.util.List,
+	org.hibernate.Session,
+	org.hibernate.Transaction,
+	org.jboss.soa.esb.monitoring.MonitoringSessionFactory,
+	org.jboss.soa.esb.monitoring.pojo.*,
+	org.jboss.soa.esb.monitoring.server.StatisticsHelper,
+	org.jboss.soa.esb.monitoring.server.OperationsHelper
+"%>
+<html>
+<head>
+   <title>JBoss ESB Management Console</title>
+   <link rel="stylesheet" href="style_master.css" type="text/css">
+   <meta http-equiv="cache-control" content="no-cache">
+</head>
+<body>
+   <table>
+      <tr>
+         <td><img src="images/logo.gif" align="left" border="0" alt="JBoss"></td>
+         <td valign="middle">         
+         <h1>JBoss ESB Management Console</h1>
+         </td>
+      </tr>
+      </table>
+      <table cellpadding="5">
+      <tr>
+      	<td><a href="/jbossesb/">Monitoring</a></td>
+      	<td><a href="/jbossesb/operations.jsp">Back to Operations list</a></td>
+      </tr>
+   </table>
+<hr>
+	<form action="manage.jsp" method="post">
+	<nobr>
+ 	Current polling interval is <b><code><%=StatisticsHelper.getCollectionInterval()%></code></b> minutes.
+	  <input type="submit" value="Collect Operations"/>
+	</nobr>
+	</form>
+<%
+Session sess = null;
+Transaction tx = null;
+try {
+	sess = MonitoringSessionFactory.getInstance().openSession();
+	tx = sess.beginTransaction();
+	List serverNames = OperationsHelper.getServerNames(sess);
+	for (int i = 0; i<serverNames.size(); i++) {
+		String serverName = (String) serverNames.get(i);
+%>
+<hr>
+	<h1><code><%=serverName%></code></h1>
+<% 
+		List results = OperationsHelper.getOperationResults(sess, serverName);
+		for (int j = 0; j < results.size(); j++) {
+			JMXOperationResult jmxor = (JMXOperationResult) results.get(j);
+		%>
+		<li><b><%=jmxor.getStatdate()%></b></li>
+		<ul>
+			<li><b>Result:</b> <%=jmxor.getResult() %>
+			<li><b>Object name:</b> <%=jmxor.getOperation().getObjectname() %>
+			<li><b>Operation:</b> <%=jmxor.getOperation().getReturntype()%> <%=jmxor.getOperation().getOperation() %>
+		</ul>
+		<% 
+	}
+
+}
+
+	if (serverNames.size() == 0) {
+		%>
+		No operations found in database.
+		<% 
+	}
+} catch (Exception e) {
+	e.printStackTrace();
+} finally {
+	if (tx.isActive()) {
+		tx.rollback();
+	} 
+	tx = null;
+	
+	sess.flush();
+	sess.close();
+	sess = null;
+}
+%>
+</body>
+</html>




More information about the jboss-svn-commits mailing list