[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