[jboss-svn-commits] JBL Code SVN: r13958 - in labs/jbossesb/trunk/product/tools/console: management and 29 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 2 09:14:04 EDT 2007
Author: tcunning
Date: 2007-08-02 09:14:03 -0400 (Thu, 02 Aug 2007)
New Revision: 13958
Added:
labs/jbossesb/trunk/product/tools/console/management/
labs/jbossesb/trunk/product/tools/console/management/build.xml
labs/jbossesb/trunk/product/tools/console/management/monitoring-mappings.hbm.xml
labs/jbossesb/trunk/product/tools/console/management/monitoring.cfg.xml
labs/jbossesb/trunk/product/tools/console/management/pom.xml
labs/jbossesb/trunk/product/tools/console/management/src/
labs/jbossesb/trunk/product/tools/console/management/src/main/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/management/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataCollector.java
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataFiler.java
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/JMXTest.java
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/MonitoringSessionFactory.java
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/pojo/
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXAttribute.java
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXData.java
labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXPattern.java
labs/jbossesb/trunk/product/tools/console/management/src/test/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/management/
labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/management/AppTest.java
labs/jbossesb/trunk/product/tools/console/management/target/
labs/jbossesb/trunk/product/tools/console/management/target/classes/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/jboss/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/jboss/soa/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/jboss/soa/esb/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/jboss/soa/esb/management/
labs/jbossesb/trunk/product/tools/console/management/target/classes/org/jboss/soa/esb/monitoring/
labs/jbossesb/trunk/product/tools/console/management/target/surefire-reports/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/org/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/org/jboss/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/org/jboss/soa/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/org/jboss/soa/esb/
labs/jbossesb/trunk/product/tools/console/management/target/test-classes/org/jboss/soa/esb/management/
Modified:
labs/jbossesb/trunk/product/tools/console/build.xml
labs/jbossesb/trunk/product/tools/console/management-web/build.xml
labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp
Log:
bug:JBESB-738
Committing management jar code.
Modified: labs/jbossesb/trunk/product/tools/console/build.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/build.xml 2007-08-02 12:12:14 UTC (rev 13957)
+++ labs/jbossesb/trunk/product/tools/console/build.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -132,16 +132,11 @@
<target name="ear" description="Build the EAR">
<property name="contract.dir" value="${basedir}/contract-web"/>
- <property name="mgmt.dir" value="${basedir}/management-web"/>
- <ant antfile="management-web/build.xml" target="war"/>
<ant antfile="contract-web/build.xml" target="war"/>
<copy todir="${ear.dir}">
<fileset dir="contract-web/build">
<include name="*.war"/>
</fileset>
- <fileset dir="management-web/build">
- <include name="*.war"/>
- </fileset>
<fileset dir="${basedir}/resources">
<include name="*jpdl.xml" />
<include name="hibernate.cfg.xml" />
Added: labs/jbossesb/trunk/product/tools/console/management/build.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/build.xml (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/build.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<project name="jboss-esb-console" default="jar" basedir=".">
+ <property name="mgmt.dir" location="."/>
+ <property name="lib.dir" location="${mgmt.dir}/../lib"/>
+ <property name="build.dir" location="${mgmt.dir}/build"/>
+ <property name="src.java.dir" location="${mgmt.dir}/src/main/java"/>
+
+ <fileset id="lib" dir="${lib.dir}">
+ <include name="*.jar" />
+ </fileset>
+
+ <path id="build.classpath">
+ <fileset refid="lib" />
+ </path>
+
+ <target name="init">
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.dir}/classes"/>
+ </target>
+
+ <target name="compile" depends="init"
+ description="Build the management war">
+ <javac classpathref="build.classpath"
+ destdir="${build.dir}/classes"
+ debug="on"
+ source="1.5"
+ target="1.5"
+ deprecation="${javac.deprecation}"
+ nowarn="on">
+ <src path="${src.java.dir}" />
+ </javac>
+ <copy file="monitoring-mappings.hbm.xml"
+ todir="build/classes/org/jboss/soa/esb/monitoring">
+ </copy>
+ </target>
+
+ <target name="jar" depends="compile"
+ description="Build the distribution .jar file">
+ <jar jarfile="${build.dir}/management.jar">
+ <fileset dir="${build.dir}/classes">
+ <include name="**/*.class"/>
+ <include name="**/*.xml"/>
+ </fileset>
+ <fileset dir="${mgmt.dir}">
+ <include name="monitoring.cfg.xml"/>
+ </fileset>
+ </jar>
+ </target>
+</project>
Added: labs/jbossesb/trunk/product/tools/console/management/monitoring-mappings.hbm.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/monitoring-mappings.hbm.xml (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/monitoring-mappings.hbm.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+ <class name="org.jboss.soa.esb.monitoring.pojo.JMXPattern" table="JMXPATTERN">
+ <id name="id" column="id" type="java.lang.Long" unsaved-value="0">
+ <generator class="identity"/>
+ </id>
+ <property name="classpattern" type="java.lang.String" column="classpattern"/>
+ <property name="keyvalue" type="java.lang.String" column="keyvalue"/>
+ </class>
+ <class name="org.jboss.soa.esb.monitoring.pojo.JMXData" table="JMXDATA">
+ <id name="id" column="id" type="java.lang.Long" unsaved-value="0">
+ <generator class="identity"/>
+ </id>
+ <many-to-one name="attribute" column="STATID"/>
+ <property name="statdate" type="java.util.Date" column="STATDATE"/>
+ <property name="timevalue" type="java.lang.Float" column="timevalue"/>
+ <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.JMXAttribute" table="JMXATTRIBUTE">
+ <id name="id" column="statid" type="java.lang.Long" unsaved-value="0">
+ <generator class="identity"/>
+ </id>
+ <property name="objectname" type="java.lang.String" column="objectname"/>
+ <property name="attribute" type="java.lang.String" column="attribute"/>
+ </class>
+</hibernate-mapping>
Added: labs/jbossesb/trunk/product/tools/console/management/monitoring.cfg.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/monitoring.cfg.xml (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/monitoring.cfg.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+"-//Hibernate/Hibernate Configuration DTD//EN"
+"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+<hibernate-configuration>
+<session-factory>
+ <property name="hibernate.session_factory_name">SessionFactory</property>
+ <property name="connection.datasource">java:/DefaultDS</property>
+ <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
+ <property name="hibernate.session_factory_name">java:/comp/env/hibernate/MonitoringSessionFactory</property>
+ <property name="hibernate.show_sql">true</property>
+ <!-- Mapping files -->
+ <mapping resource="org/jboss/soa/esb/monitoring/monitoring-mappings.hbm.xml"/>
+</session-factory>
+</hibernate-configuration>
Added: labs/jbossesb/trunk/product/tools/console/management/pom.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/pom.xml (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/pom.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,30 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.soa.esb.management</groupId>
+ <artifactId>management</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>management</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataCollector.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataCollector.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataCollector.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,151 @@
+package org.jboss.soa.esb.monitoring;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Date;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+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.hibernate.Transaction;
+import org.jboss.soa.esb.monitoring.pojo.JMXAttribute;
+import org.jboss.soa.esb.monitoring.pojo.JMXPattern;
+import org.jboss.soa.esb.monitoring.pojo.JMXData;
+
+public class DataCollector {
+ Logger logger = Logger.getLogger(DataCollector.class);
+ private Context context;
+ private MBeanServerConnection server;
+ private StatisticsData data;
+
+ public DataCollector() {
+ try {
+ context = new InitialContext();
+ server = (MBeanServerConnection) context.lookup("jmx/invoker/RMIAdaptor");
+ } catch (NamingException e) {
+ logger.error("", e);
+ }
+ data = new StatisticsData();
+ }
+
+ public DataCollector(Context f_context) {
+ context = f_context;
+ try {
+ server = (MBeanServerConnection) context.lookup("jmx/invoker/RMIAdaptor");
+ } catch (NamingException e) {
+ logger.error("", e);
+ }
+ data = new StatisticsData();
+
+ }
+
+ 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.info(jmc.getKeyvalue() + " matches " + on.getKeyPropertyListString());
+ } else {
+ logger.info(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 insertAttribute(JMXAttribute attr, Date date,
+ Float floatValue, Integer intValue, String stringValue) {
+ JMXData jmxd = new JMXData(attr, date, floatValue, intValue, stringValue);
+ logger.error("insert data(" + attr.getId() + ", " + date + ", " + floatValue
+ + ", " + intValue + ", " + stringValue + ")");
+ Session sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+ Transaction tx = sess.beginTransaction();
+ sess.save(jmxd);
+ tx.commit();
+ sess.close();
+ }
+ */
+
+ public void insertAttributes(ObjectName on) {
+ MBeanInfo info = null;
+ Date date = new Date(System.currentTimeMillis());
+ InetAddress addr = null;
+ try {
+ addr = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ logger.error("", e);
+ }
+
+ try {
+ info = server.getMBeanInfo(on);
+ MBeanAttributeInfo[] mai = info.getAttributes();
+ for (int i = 0; i < mai.length; i++) {
+ StatisticsBean sb = new StatisticsBean(on.toString(), mai[i].getName(),
+ addr.getHostName(), date, mai[i].getType(),
+ server.getAttribute(on, mai[i].getName()));
+ if (sb.getData() != null) {
+ ArrayList<StatisticsBean> list = (ArrayList<StatisticsBean>) data.getList();
+ list.add(sb);
+ }
+ }
+ } catch (Exception e) {
+ logger.error("", e);
+ }
+ }
+
+ public void insertData() {
+ 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);
+ insertAttributes(on);
+ }
+ }
+ }
+
+ public StatisticsData getData() {
+ return data;
+ }
+
+}
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataFiler.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataFiler.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/DataFiler.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,90 @@
+package org.jboss.soa.esb.monitoring;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.jboss.soa.esb.monitoring.pojo.*;
+
+public class DataFiler {
+ private StatisticsData data;
+ private static final Logger logger = Logger.getLogger(DataFiler.class);
+
+ public DataFiler() {
+ }
+
+ public DataFiler(StatisticsData f_data) {
+ data = f_data;
+ }
+
+ public JMXAttribute getAttribute(Session sess, String objectname, String attribute) {
+ String query = "from JMXAttribute jmxa "
+ + "where objectname = :objectname and attribute = :attribute";
+
+ List result = sess.createQuery(query)
+ .setString("objectname", objectname)
+ .setString("attribute", attribute).list();
+
+ if (result.size() > 0) {
+ JMXAttribute jmxa = (JMXAttribute) result.get(0);
+ return jmxa;
+ }
+ return null;
+ }
+
+ public void insertData(Session sess, StatisticsBean f_sb, JMXAttribute attr) {
+ JMXData jmxd = null;
+ if (f_sb.getType().equals("java.lang.String")) {
+ String data = (String) f_sb.getData();
+ jmxd = new JMXData(null, f_sb.getCollectionTime(), null, null, data);
+ } else if (f_sb.getType().equals("java.lang.Float")) {
+ Float data = (Float) f_sb.getData();
+ jmxd = new JMXData(null, f_sb.getCollectionTime(), data, null, null);
+ } else if (f_sb.getType().equals("java.lang.Integer")) {
+ Integer data = (Integer) f_sb.getData();
+ jmxd = new JMXData(null, f_sb.getCollectionTime(), null, data, null);
+ } else if (f_sb.getType().equals("long")) {
+ Long data = (Long) f_sb.getData();
+ jmxd = new JMXData(null, f_sb.getCollectionTime(), null, new Integer(data.intValue()), null);
+ } else if (f_sb.getType().equals("int")) {
+ Integer data = (Integer) f_sb.getData();
+ jmxd = new JMXData(null, f_sb.getCollectionTime(), null, data, null);
+ } else {
+ logger.error ("ERROR - found type of " + f_sb.getType() + " for " + f_sb.getAttribute());
+ return;
+ }
+ jmxd.setAttribute(attr);
+ try {
+ sess.save(jmxd);
+ } catch (Exception e) {
+ logger.error("Problem saving " + jmxd.toString(), e);
+ }
+ }
+
+ public void insertStatistics(StatisticsBean f_sb) {
+ Session sess = (Session) MonitoringSessionFactory.getInstance().openSession();
+ Transaction tx = sess.beginTransaction();
+
+ JMXAttribute attr = getAttribute(sess, f_sb.getObjectName(), f_sb.getAttribute());
+ if (attr == null) {
+ attr = new JMXAttribute(f_sb.getObjectName(), f_sb.getAttribute());
+ sess.save(attr);
+ insertData(sess, f_sb, attr);
+ } else {
+ insertData(sess, f_sb, attr);
+ }
+ tx.commit();
+
+ sess.flush();
+ sess.close();
+ }
+
+ public void persistData() {
+ List list = data.getList();
+ for (int i = 0; i < list.size(); i++) {
+ StatisticsBean bean = (StatisticsBean) list.get(i);
+ insertStatistics(bean);
+ }
+ }
+}
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/JMXTest.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/JMXTest.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/JMXTest.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,28 @@
+package org.jboss.soa.esb.monitoring;
+
+import javax.naming.*;
+import javax.management.*;
+import java.util.*;
+
+public class JMXTest {
+ public JMXTest() {
+ }
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String[] args) throws Exception
+ {
+ Hashtable environment = new Hashtable();
+ environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
+ environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
+ environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
+ InitialContext ic = new InitialContext(environment);
+
+ DataCollector dcollector = new DataCollector(ic);
+ dcollector.insertData();
+ StatisticsData data = dcollector.getData();
+ data.print();
+
+ }
+}
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/MonitoringSessionFactory.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/MonitoringSessionFactory.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/MonitoringSessionFactory.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,67 @@
+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 org.apache.log4j.Logger;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+
+/**
+ * MonitoringSessionFactory is a singleton for hibernate's SessionFactory object. The
+ * monitoring and management app uses a static SessionFactory variable to store
+ * the Hibernate SessionFactory.
+ *
+ * @author <a href="mailto:tcunning at redhat.com">tcunning at redhat.com</a>
+ * @since Version 4.2
+ *
+ */
+public class MonitoringSessionFactory {
+ public static final String HIBERNATE_JNDI = "java:comp/env/hibernate/MonitoringSessionFactory";
+ private static final Logger m_Logger = Logger.getLogger(MonitoringSessionFactory.class);
+
+ private static SessionFactory sessionFactory;
+
+ private MonitoringSessionFactory() {
+ }
+
+ public static SessionFactory getInstance() {
+ if (sessionFactory == null) {
+ init();
+ }
+ return sessionFactory;
+ }
+
+ /**
+ * Grab InitialContext out of JNDI.
+ * @param f_cfg hibernate configuration
+ * @throws ConfigurationException
+ */
+ private static void init() {
+ try {
+ sessionFactory = new Configuration().configure("monitoring.cfg.xml").buildSessionFactory();
+ } catch (Exception e) {
+ m_Logger.error("", e);
+ }
+ }
+
+}
\ No newline at end of file
Added: 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 (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsBean.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,84 @@
+package org.jboss.soa.esb.monitoring;
+
+import java.util.Date;
+
+public class StatisticsBean {
+ private String objectName;
+ private String attribute;
+ private String server;
+ private Date collectionTime;
+ private String type;
+ private Object data;
+
+ public StatisticsBean(String f_objectName, String f_attribute, String f_server,
+ Date f_collectionTime, String f_type, Object f_data) {
+ objectName = f_objectName;
+ attribute = f_attribute;
+ server = f_server;
+ collectionTime = f_collectionTime;
+ type = f_type;
+ data = f_data;
+ }
+
+ public String getAttribute() {
+ return attribute;
+ }
+
+ public void setAttribute(String attribute) {
+ this.attribute = attribute;
+ }
+
+ public Date getCollectionTime() {
+ return collectionTime;
+ }
+
+ public void setCollectionTime(Date collectionTime) {
+ this.collectionTime = collectionTime;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+ public String getObjectName() {
+ return objectName;
+ }
+
+ public void setObjectName(String objectName) {
+ this.objectName = objectName;
+ }
+
+ public String getServer() {
+ return server;
+ }
+
+ public void setServer(String server) {
+ this.server = server;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String toString() {
+ String objectData = "";
+ if (type.equals("java.lang.String")) {
+ objectData = (String) data;
+ } else if (type.equals("java.lang.Integer")) {
+ objectData = ((Integer) data).toString();
+ } else if (type.equals("java.lang.Float")) {
+ objectData = ((Float) data).toString();
+ }
+ return "objectName[" + objectName +"] attribute[" + attribute
+ + "] server[" + server + "collectionTime[" + collectionTime
+ + "] type[" + type + "] object[" + objectData + "]";
+ }
+}
Added: 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 (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/StatisticsData.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,23 @@
+package org.jboss.soa.esb.monitoring;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StatisticsData {
+ private List<StatisticsBean> list;
+
+ public StatisticsData() {
+ list = new ArrayList<StatisticsBean>();
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public void print() {
+ for (int i = 0; i < list.size(); i++) {
+ StatisticsBean sb = list.get(i);
+ System.out.println(sb.toString());
+ }
+ }
+}
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXAttribute.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXAttribute.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXAttribute.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,51 @@
+package org.jboss.soa.esb.monitoring.pojo;
+// Generated Aug 1, 2007 5:36:51 PM by Hibernate Tools 3.2.0.b9
+
+
+
+/**
+ * JMXAttribute generated by hbm2java
+ */
+public class JMXAttribute implements java.io.Serializable {
+
+
+ private Long id;
+ private String objectname;
+ private String attribute;
+
+ public JMXAttribute() {
+ }
+
+ public JMXAttribute(String objectname, String attribute) {
+ this.objectname = objectname;
+ this.attribute = attribute;
+ }
+
+ public Long getId() {
+ return this.id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public String getObjectname() {
+ return this.objectname;
+ }
+
+ public void setObjectname(String objectname) {
+ this.objectname = objectname;
+ }
+ public String getAttribute() {
+ return this.attribute;
+ }
+
+ public void setAttribute(String attribute) {
+ this.attribute = attribute;
+ }
+
+
+
+
+}
+
+
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXData.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXData.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXData.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,80 @@
+package org.jboss.soa.esb.monitoring.pojo;
+// Generated Aug 1, 2007 5:36:51 PM by Hibernate Tools 3.2.0.b9
+
+
+import java.util.Date;
+
+/**
+ * JMXData generated by hbm2java
+ */
+public class JMXData implements java.io.Serializable {
+
+
+ private Long id;
+ private JMXAttribute attribute;
+ private Date statdate;
+ private Float timevalue;
+ private Integer countvalue;
+ private String textvalue;
+
+ public JMXData() {
+ }
+
+ public JMXData(JMXAttribute attribute, Date statdate, Float timevalue, Integer countvalue, String textvalue) {
+ this.attribute = attribute;
+ this.statdate = statdate;
+ this.timevalue = timevalue;
+ this.countvalue = countvalue;
+ this.textvalue = textvalue;
+ }
+
+ public Long getId() {
+ return this.id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public JMXAttribute getAttribute() {
+ return this.attribute;
+ }
+
+ public void setAttribute(JMXAttribute attribute) {
+ this.attribute = attribute;
+ }
+ public Date getStatdate() {
+ return this.statdate;
+ }
+
+ public void setStatdate(Date statdate) {
+ this.statdate = statdate;
+ }
+ public Float getTimevalue() {
+ return this.timevalue;
+ }
+
+ public void setTimevalue(Float timevalue) {
+ this.timevalue = timevalue;
+ }
+ public Integer getCountvalue() {
+ return this.countvalue;
+ }
+
+ public void setCountvalue(Integer countvalue) {
+ this.countvalue = countvalue;
+ }
+ public String getTextvalue() {
+ return this.textvalue;
+ }
+
+ public void setTextvalue(String textvalue) {
+ this.textvalue = textvalue;
+ }
+
+ public String toString() {
+ return "id [" + id + "] time[" + statdate + "]";
+ }
+
+}
+
+
Added: labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXPattern.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXPattern.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/pojo/JMXPattern.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,51 @@
+package org.jboss.soa.esb.monitoring.pojo;
+// Generated Aug 1, 2007 5:36:51 PM by Hibernate Tools 3.2.0.b9
+
+
+
+/**
+ * JMXPattern generated by hbm2java
+ */
+public class JMXPattern implements java.io.Serializable {
+
+
+ private Long id;
+ private String classpattern;
+ private String keyvalue;
+
+ public JMXPattern() {
+ }
+
+ public JMXPattern(String classpattern, String keyvalue) {
+ this.classpattern = classpattern;
+ this.keyvalue = keyvalue;
+ }
+
+ public Long getId() {
+ return this.id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public String getClasspattern() {
+ return this.classpattern;
+ }
+
+ public void setClasspattern(String classpattern) {
+ this.classpattern = classpattern;
+ }
+ public String getKeyvalue() {
+ return this.keyvalue;
+ }
+
+ public void setKeyvalue(String keyvalue) {
+ this.keyvalue = keyvalue;
+ }
+
+
+
+
+}
+
+
Added: labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/management/AppTest.java
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/management/AppTest.java (rev 0)
+++ labs/jbossesb/trunk/product/tools/console/management/src/test/java/org/jboss/soa/esb/management/AppTest.java 2007-08-02 13:14:03 UTC (rev 13958)
@@ -0,0 +1,38 @@
+package org.jboss.soa.esb.management;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Modified: labs/jbossesb/trunk/product/tools/console/management-web/build.xml
===================================================================
--- labs/jbossesb/trunk/product/tools/console/management-web/build.xml 2007-08-02 12:12:14 UTC (rev 13957)
+++ labs/jbossesb/trunk/product/tools/console/management-web/build.xml 2007-08-02 13:14:03 UTC (rev 13958)
@@ -1,13 +1,76 @@
<?xml version="1.0"?>
<project name="management-web" default="war" basedir=".">
- <property name="mgmt.dir" location="."/>
- <echo>${mgmt.dir}</echo>
- <target name="war"
+
+ <property name="console.dir" location="${pwd}/../.."/>
+ <property name="product.dir" location="${console.dir}/../.."/>
+ <property name="install.dir" value="${product.dir}/install"/>
+ <property file="${install.dir}/deployment.properties"/>
+
+ <property name="mgmt.web.dir" location="."/>
+ <property name="db" value="hsqldb"/>
+
+ <target name="build-jar">
+ <echo>${console.dir}</echo>
+ <ant dir="${console.dir}/management" target="jar"/>
+ </target>
+
+ <target name="war" depends="build-jar"
description="Build the management WAR">
- <mkdir dir="${mgmt.dir}/build"/>
- <war destfile="${mgmt.dir}/build/management.war"
- webxml="${mgmt.dir}/src/main/webapp/WEB-INF/web.xml"
- basedir="${mgmt.dir}/src/main/webapp"/>
+ <mkdir dir="${mgmt.web.dir}/build"/>
+ <war destfile="${mgmt.web.dir}/build/management.war"
+ webxml="${mgmt.web.dir}/src/main/webapp/WEB-INF/web.xml"
+ basedir="${mgmt.web.dir}/src/main/webapp">
+ <lib dir="${console.dir}/management/build">
+ <include name="*.jar"/>
+ </lib>
+ <fileset dir="${mgmt.web.dir}/src/main/resources/${db}">
+ <include name="*.sql"/>
+ </fileset>
+ </war>
</target>
+
+ <target name="deploy" depends="war" description="Deploy the WAR">
+ <mkdir dir="${org.jboss.esb.server.home}/server/default/deploy/management.war"/>
+ <unzip src="${mgmt.web.dir}/build/management.war"
+ dest="${org.jboss.esb.server.home}/server/default/deploy/management.war">
+ </unzip>
+
+ <copy file="${mgmt.web.dir}/src/main/resources/jbossesbmanagement-service.xml"
+ todir="${org.jboss.esb.server.home}/server/default/deploy"
+ overwrite="true">
+ <filterset>
+ <filter token="db.dir" value="/management.war"/>
+ <filter token="insertrows" value="deploy/management.war/insertrows.sql"/>
+ </filterset>
+ </copy>
+ </target>
+
+ <path id="toolslib">
+ <path location="${console.dir}/management/build/management.jar"/>
+ <pathelement location="${mgmt.web.dir}/build/hibernate"/>
+ <fileset dir="${mgmt.web.dir}/lib" includes="*.jar"/>
+ <path location="${product.dir}/services/jbpm/lib/ext/dom4j.jar"/>
+ <fileset dir="${product.dir}/lib/ext" includes="*.jar"/>
+ </path>
+
+ <target name="hibtool" depends="build-jar">
+ <!-- We need monitoring-mappings.hbm.xml in the classpath
+ in the correct package directory - creating it and
+ copying the file here -->
+ <mkdir dir="${mgmt.web.dir}/build/hibernate/org/jboss/soa/esb/monitoring"/>
+ <copy file="${console.dir}/management/monitoring-mappings.hbm.xml"
+ todir="${mgmt.web.dir}/build/hibernate/org/jboss/soa/esb/monitoring"
+ overwrite="true"/>
+
+ <taskdef name="hibernatetool"
+ classname="org.hibernate.tool.ant.HibernateToolTask"
+ classpathref="toolslib"/>
+ <hibernatetool
+ destdir="${mgmt.web.dir}/build">
+ <configuration configurationfile="${console.dir}/management/monitoring.cfg.xml"/>
+ <hbm2hbmxml/>
+ <hbm2java jdk5="true"/>
+ </hibernatetool>
+ </target>
</project>
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-08-02 12:12:14 UTC (rev 13957)
+++ labs/jbossesb/trunk/product/tools/console/management-web/src/main/webapp/index.jsp 2007-08-02 13:14:03 UTC (rev 13958)
@@ -2,38 +2,100 @@
<%@ page session="true" %>
<%@ page import="
org.jboss.soa.esb.addressing.EPR,
+ org.jboss.soa.esb.monitoring.JMXHelper,
+ javax.naming.InitialContext,
+ javax.management.MBeanOperationInfo,
+ javax.management.MBeanParameterInfo,
org.jboss.internal.soa.esb.services.registry.*,
java.util.*
"%>
+<%
+String objectName = request.getParameter("objectName");
+if (objectName == null || "".equals(objectName)) {
+ objectName = "jboss.esb:service=MessageCounter";
+}
+InitialContext ic = new InitialContext();
+JMXHelper jmxh = new JMXHelper(ic);
+MBeanOperationInfo[] info = jmxh.getOperators(objectName);
+%>
<html>
+<head>
+ <title>JBoss ESB - Service List</title>
+ <link rel='stylesheet' href='./styles.css'>
+</head>
<body>
-<h2>Hello World!</h2>
-</body>
+<h2>Classname</h2>: <%=jmxh.getClassName(objectName)%>
+<h2>Properties</h2>
+<table>
<%
-try {
- JAXRRegistryImpl registry = new JAXRRegistryImpl();
- List services = registry.findAllServices();
- for (Iterator it = services.iterator (); it.hasNext (); ) {
- String serv = (String) it.next ();
- %>
- <%=serv%><br>
- <%
+ boolean hasWriteable = false;
+ for(int a = 0; a < attributeInfo.length; a ++)
+ {
+ MBeanAttributeInfo attrInfo = attributeInfo[a];
+ String attrName = attrInfo.getName();
+ String attrType = attrInfo.getType();
+ AttrResultInfo attrResult = Server.getMBeanAttributeResultInfo(objectNameString, attrInfo);
+ String attrValue = attrResult.getAsText();
+ String access = "";
+ if( attrInfo.isReadable() )
+ access += "R";
+ if( attrInfo.isWritable() )
+ {
+ access += "W";
+ hasWriteable = true;
+ }
+ String attrDescription = fixDescription(attrInfo.getDescription());
+ %>
+ <tr>
+ <td><%= attrName %></td>
+ <td><%= attrType %></td>
+ <td><%= access %></td>
+ <td><%= attrValue %></td>
+ </tr>
+ <%
+ }
+ %>
- }
+</table>
+<h2>Operations</h2>
+
+<%
+for (int i=0; i<info.length; i++) {
+ MBeanParameterInfo[] mpi = info[i].getSignature();
+
%>
- <h2>EPR</h2><p>
+ <table>
+ <tr>
+ <th>Method</th>
+ <th>Arguments</th>
+ <th>Invoke</th>
+ </tr>
+ <form method="post" action="execute">
+ <input type="hidden" name="action" value="<%=info[i].getName()%>">
+ <input type="hidden" name="objectname" value="<%=objectName%>">
+ <input type="hidden" name="argindex" value="<%=mpi.length%>">
+ <tr>
+ <td><%=info[i].getReturnType()%> <%=info[i].getName()%></td>
+ <td>(
+ <%
+ for (int j = 0; j < mpi.length; j++) {
+ String delim = "";
+ if (j != mpi.length - 1) {
+ delim = ",";
+ }
+
+ %>
+ <%=mpi[j].getType() + " " + mpi[j].getName()%><%=delim %>
+ <%
+ }
+ %>
+ )</td>
+ <td><input type="submit" value="Invoke"></td>
+ </tr>
+ </form>
<%
- List eprs = registry.findAllEPRs();
- for (Iterator it = eprs.iterator(); it.hasNext(); ) {
- EPR epr = (EPR) it.next();
- String eprString = epr.getAddr().toString();
- String addr = epr.getAddr().getAddress();
- %>
- <%=eprString%> - <%=addr%><br>
- <%
- }
-} catch (Exception e) {
- e.printStackTrace();
}
%>
+</table>
+</body>
</html>
More information about the jboss-svn-commits
mailing list