[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