[jboss-cvs] JBossAS SVN: r77360 - in trunk/varia/src/resources/jmx/html: cluster and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 22 10:17:52 EDT 2008
Author: csaldanh
Date: 2008-08-22 10:17:51 -0400 (Fri, 22 Aug 2008)
New Revision: 77360
Added:
trunk/varia/src/resources/jmx/html/filterView.jsp
Modified:
trunk/varia/src/resources/jmx/html/cluster/bootstrap.html
trunk/varia/src/resources/jmx/html/cluster/clusterView.jsp
trunk/varia/src/resources/jmx/html/cluster/index.html
trunk/varia/src/resources/jmx/html/displayMBeans.jsp
trunk/varia/src/resources/jmx/html/displayOpResult.jsp
trunk/varia/src/resources/jmx/html/images/logo.gif
trunk/varia/src/resources/jmx/html/index.jsp
trunk/varia/src/resources/jmx/html/inspectMBean.jsp
trunk/varia/src/resources/jmx/html/style_master.css
Log:
JBAS-5862: New look for jmx-console
Modified: trunk/varia/src/resources/jmx/html/cluster/bootstrap.html
===================================================================
--- trunk/varia/src/resources/jmx/html/cluster/bootstrap.html 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/cluster/bootstrap.html 2008-08-22 14:17:51 UTC (rev 77360)
@@ -4,12 +4,13 @@
<link rel="stylesheet" href="../style_master.css" type="text/css">
</head>
-<table>
- <tr>
- <td width="250" ><img src="../images/logo.gif" align="left" border="0" alt=""></td>
- <td><h1>JBoss Cluster Bootstrap</h1></td>
- </tr>
-</table>
+ <table width="100%" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td height="105" align="center"><h1>JBoss Cluster Bootstrap</h1></td>
+ <td height="105" align="center" width="300" nowrap><%= new java.util.Date() %></td>
+ </tr>
+ </table>
+
<hr>
<body>
The cluster nodes to view need to be specified via some bootstrap mechanism.
@@ -21,25 +22,25 @@
specifying the name in the PartitionName field.
If not specified than the first partition to respond will be choosen.
<form action="ClusteredConsole?action=bootstrap" method="post" target="ClusterIndex">
- <input type="hidden" name="bootstrap" value="discovery">
- <table cellspacing="2" cellpadding="2" border="0">
- <tr>
- <td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
- </tr>
- <tr>
- <td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
- </tr>
- <tr>
- <td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
- </tr>
- <tr>
- <td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
- </tr>
- <tr>
- <td><input type="reset" name="reset" value="Clear"></td>
- <td><input type="submit" name="submit" value="Bootstrap"></td>
- </tr>
- </table>
+ <input type="hidden" name="bootstrap" value="discovery">
+ <table cellspacing="2" cellpadding="2" border="0" align="center">
+ <tr>
+ <td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
+ </tr>
+ <tr>
+ <td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
+ </tr>
+ <tr>
+ <td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
+ </tr>
+ <tr>
+ <td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
+ </tr>
+ <tr>
+ <td><input type="reset" name="reset" value="Clear"></td>
+ <td><input type="submit" name="submit" value="Bootstrap"></td>
+ </tr>
+ </table>
</form>
<h1>Bootstrap Using a Hostname</h1>
@@ -49,19 +50,19 @@
determining the members of the cluster. To query the server hosting the
jmx-console application use "locahost" for the hostname.
<form action="ClusteredConsole" method="post" target="ClusterIndex">
- <input type="hidden" name="bootstrap" value="byhost">
- <table cellspacing="2" cellpadding="2" border="0">
- <tr>
- <td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
- </tr>
- <tr>
- <td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
- </tr>
- <tr>
- <td><input type="reset" name="reset" value="Clear"></td>
- <td><input type="submit" name="submit" value="Bootstrap"></td>
- </tr>
- </table>
+ <input type="hidden" name="bootstrap" value="byhost">
+ <table cellspacing="2" cellpadding="2" border="0" align="center">
+ <tr>
+ <td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
+ </tr>
+ <tr>
+ <td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
+ </tr>
+ <tr>
+ <td><input type="reset" name="reset" value="Clear"></td>
+ <td><input type="submit" name="submit" value="Bootstrap"></td>
+ </tr>
+ </table>
</form>
</body>
Modified: trunk/varia/src/resources/jmx/html/cluster/clusterView.jsp
===================================================================
(Binary files differ)
Modified: trunk/varia/src/resources/jmx/html/cluster/index.html
===================================================================
--- trunk/varia/src/resources/jmx/html/cluster/index.html 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/cluster/index.html 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,6 +1,6 @@
<!-- frames -->
-<frameset cols="20%, *">
+<frameset cols="255, *">
<frame name="ClusterIndex" src="ClusteredConsole?action=index" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
<frame name="ClusterNodeView" src="bootstrap.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
- <noframes>A frames enabled browser is required for the cluster view</noframes>
+ <noframes>A frames enabled browser is required for the cluster view</noframes>
</frameset>
Modified: trunk/varia/src/resources/jmx/html/displayMBeans.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/displayMBeans.jsp 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/displayMBeans.jsp 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,79 +1,89 @@
<?xml version="1.0"?>
-<%@page contentType="text/html"
- import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"
+<%@page contentType="text/html" import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%
+ String bindAddress = "";
+ String serverName = "";
+ try
+ {
+ bindAddress = System.getProperty("jboss.bind.address", "");
+ serverName = System.getProperty("jboss.server.name", "");
+ }
+ catch (SecurityException se) {}
+
+ String hostname = "";
+ try
+ {
+ hostname = InetAddress.getLocalHost().getHostName();
+ }
+ catch(IOException e) {}
+
+ String hostInfo = hostname;
+ if (!bindAddress.equals(""))
+ {
+ hostInfo = hostInfo + " (" + bindAddress + ")";
+ }
%>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
- <%
- String bindAddress = "";
- String serverName = "";
- try
- {
- bindAddress = System.getProperty("jboss.bind.address", "");
- serverName = System.getProperty("jboss.server.name", "");
- }
- catch (SecurityException se) {}
-
- String hostname = "";
- try
- {
- hostname = InetAddress.getLocalHost().getHostName();
- }
- catch(IOException e) {}
-
- String hostInfo = hostname;
- if (!bindAddress.equals(""))
- {
- hostInfo = hostInfo + " (" + bindAddress + ")";
- }
- %>
<title>JBoss JMX Management Console - <%= hostInfo %></title>
- <link rel="stylesheet" href="style_master.css" type="text/css" />
- <meta http-equiv="cache-control" content="no-cache" />
+ <link rel="stylesheet" href="style_master.css" type="text/css"/>
+ <meta http-equiv="cache-control" content="no-cache"/>
</head>
+
<body>
- <img src="images/logo.gif" align="right" border="0" alt="logo" />
- <h1>JMX Agent View</h1>
- <h3><%= hostInfo %> - <%= serverName %></h3>
-<form action="HtmlAdaptor?action=displayMBeans" method="post" name="applyFilter" id="applyFilter">
-ObjectName Filter (e.g. "jboss:*", "*:service=invoker,*"): <br />
-<input type="text" name="filter" size="40" value="<%= request.getAttribute("filter")%>" /> <%
- if (request.getAttribute("filterError") != null) {
- out.println("<span class='error'>"+request.getAttribute("filterError")+"</span>");
- }
- %>
- <br/>
-<input type="submit" name="apply" value="Apply Filter" />
-<input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="Clear Filter" />
-
+ <table width='100%' cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td height="105" align="center"><h1>JMX Agent View</h1><h3><%= hostInfo%> - <%= serverName %></h3></td>
+ <td height="105" align="center" width="300" nowrap>
+ <form action="HtmlAdaptor?action=displayMBeans" method="post" name="applyFilter" id="applyFilter">
+ ObjectName Filter (e.g.: "jboss:*", "*:service=invoker,*"):<br/>
+ <input type="text" name="filter" size="20" value="<%= request.getAttribute("filter")%>" />
+ <input type="submit" name="apply" value="Apply Filter" />
+ <input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="Clear Filter" />
<%
- for (Iterator mbeans = (Iterator) request.getAttribute("mbeans"); mbeans
- .hasNext();) {
- DomainData domainData = (DomainData) mbeans.next();
+ if (request.getAttribute("filterError") != null) {
+ out.println("<br/><span class='error'>"+request.getAttribute("filterError")+"</span>");
+ }
%>
- <h2 class='DomainName'>
- <a href="javascript:document.applyFilter.filter.value='<%= domainData.getDomainName() %>:*';document.applyFilter.submit()"><%=domainData.getDomainName()%></a>
- </h2>
- <ul class='MBeanList'>
+ </form>
+ <%= new java.util.Date() %>
+ </td>
+ </tr>
+ </table>
+
+
+
<%
- MBeanData[] data = domainData.getData();
- for (int d = 0; d < data.length; d++) {
- String name = data[d].getObjectName().toString();
- String properties = data[d].getNameProperties();
+ out.println("<table width='100%' cellspacing='1' cellpadding='1' border='1'>");
+ Iterator mbeans = (Iterator) request.getAttribute("mbeans");
+ int i=0;
+ while( mbeans.hasNext() )
+ {
+ DomainData domainData = (DomainData) mbeans.next();
+ out.println(" <tr>");
+ out.println(" <th style='text-align: left'>");
+ out.println(" <h2><a href=\"javascript:document.applyFilter.filter.value='"+domainData.getDomainName()+":*';document.applyFilter.submit()\">"+domainData.getDomainName()+"</a></h2>");
+ out.println(" </th>");
+ out.println(" </tr>");
+ out.println(" <tr>");
+ out.println(" <td bgcolor='#D0D0D0'>");
+ out.println(" <ul>");
+ MBeanData[] data = domainData.getData();
+ for(int d = 0; d < data.length; d ++)
+ {
+ String name = data[d].getObjectName().toString();
+ String properties = data[d].getNameProperties();
+ out.println(" <li><a href=\"HtmlAdaptor?action=inspectMBean&name="+URLEncoder.encode(name,"UTF-8")+"\">"+URLDecoder.decode(properties,"UTF-8")+"</a></li>");
+ }
+ out.println(" </ul>");
+ out.println(" </td>");
+ out.println(" </tr>");
+ }
+ out.println("</table>");
%>
- <li><a href="HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(name) %>"><%=URLDecoder.decode(properties)%></a></li>
-<%
- }
-%>
- </ul>
-<%
- }
-%>
-</form>
</body>
</html>
Modified: trunk/varia/src/resources/jmx/html/displayOpResult.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/displayOpResult.jsp 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/displayOpResult.jsp 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,9 +1,18 @@
<?xml version="1.0"?>
<%@page contentType="text/html"
import="java.net.*,
+ java.io.*,
java.beans.PropertyEditor,
org.jboss.util.propertyeditor.PropertyEditors"
%>
+<%
+String hostname = "";
+try
+{
+ hostname = InetAddress.getLocalHost().getHostName();
+}
+catch(IOException e){}
+%>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -15,74 +24,71 @@
<link rel="stylesheet" href="style_master.css" type="text/css" />
<meta http-equiv="cache-control" content="no-cache" />
</head>
-<body>
<jsp:useBean id='opResultInfo' class='org.jboss.jmx.adaptor.control.OpResultInfo' type='org.jboss.jmx.adaptor.control.OpResultInfo' scope='request'/>
<%
if(opResultInfo.name == null)
{
%>
- <jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+ <jsp:forward page="/" />
+
<%
}
-%>
+%>
+<body leftmargin="10" rightmargin="10" topmargin="10">
- <img src="images/logo.gif" align="right" border="0" alt="logo" />
- <h1>JMX MBean Operation Result</h1>
- <h3><%= request.getParameter("name") %></h3>
- <h3>Operation <code><%= opResultInfo.name%>()</code></h3>
+<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
+ <tr>
+ <td height="105" align="center"><h1>JMX MBean Operation View</h1><%= hostname %></td>
+ <td height="105" align="center" width="300">
+ <p>
+ <input type="button" value="Back to Agent" onClick="javascript:location='HtmlAdaptor?action=displayMBeans'"/>
+ <input type="button" value="Back to MBean" onClick="javascript:location='HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(request.getParameter("name"),"UTF-8") %>'"/>
+ </p>
+ <p>
+ <%
+ out.print("<input type='button' onClick=\"location='HtmlAdaptor?action=invokeOpByName");
+ out.print("&name=" + URLEncoder.encode(request.getParameter("name"),"UTF-8"));
+ out.print("&methodName=" + opResultInfo.name );
+
+ for (int i=0; i<opResultInfo.args.length; i++)
+ {
+ out.print("&argType=" + opResultInfo.signature[i]);
+ out.print("&arg" + i + "=" + opResultInfo.args[i]);
+ }
+
+ out.println("'\" value='Reinvoke MBean Operation'/>");
+ %>
+ </p>
+ </td>
+ </tr>
+</table>
-<p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
- 
-<a href='HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Back to MBean View</a>
- 
-<a href=
<%
- out.print("'HtmlAdaptor?action=invokeOpByName");
- out.print("&name=" + URLEncoder.encode(request.getParameter("name")));
- out.print("&methodName=" + opResultInfo.name );
-
- for (int i=0; i<opResultInfo.args.length; i++)
- {
- out.print("&argType=" + opResultInfo.signature[i]);
- out.print("&arg" + i + "=" + opResultInfo.args[i]);
- }
-
- out.println("'>Reinvoke MBean Operation");
-%>
-</a>
-</p>
-
-<hr />
- <span class='OpResult'>
-<%
if( opResultInfo.result == null )
{
-%>
- Operation completed successfully without a return value.
-<%
+ out.println("Operation completed successfully without a return value!");
}
else
{
String opResultString = null;
-
+
PropertyEditor propertyEditor = PropertyEditors.findEditor(opResultInfo.result.getClass());
- if(propertyEditor != null) {
+ if(propertyEditor != null)
+ {
propertyEditor.setValue(opResultInfo.result);
opResultString = propertyEditor.getAsText();
- } else {
+ }
+ else
+ {
opResultString = opResultInfo.result.toString();
}
boolean hasPreTag = opResultString.startsWith("<pre>");
- if( hasPreTag == false )
- out.println("<pre>");
+ if( hasPreTag == false ) out.println("<pre>");
out.println(opResultString);
- if( hasPreTag == false )
- out.println("</pre>");
+ if( hasPreTag == false ) out.println("</pre>");
}
%>
- </span>
</body>
</html>
Added: trunk/varia/src/resources/jmx/html/filterView.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/filterView.jsp (rev 0)
+++ trunk/varia/src/resources/jmx/html/filterView.jsp 2008-08-22 14:17:51 UTC (rev 77360)
@@ -0,0 +1,38 @@
+<%@page contentType="text/html" import="java.util.*,org.jboss.jmx.adaptor.control.*,org.jboss.jmx.adaptor.model.*,java.io.*" %>
+<html>
+<head>
+ <title>JBoss Object Index</title>
+ <link rel="stylesheet" href="style_master.css" type="text/css">
+ <meta http-equiv="cache-control" content="no-cache"/>
+</head>
+
+<body leftmargin="10" rightmargin="10" topmargin="10">
+
+<table width="235" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td align="center" width="235" height="105"><img src="images/logo.gif" border="0" alt="JBoss"/></td>
+</tr>
+</table>
+
+
+
+<table width="235" cellspacing="0" cellpadding="0" border="0">
+<tr><td><h2>Object Name Filter</h2></td></tr>
+<tr><td><h3><a href="HtmlAdaptor?action=displayMBeans&filter=" target="ObjectNodeView">Remove Object Name Filter</a></h3></td></tr>
+<%
+ Iterator mbeans = (Iterator) Server.getDomainData("");
+ int i=0;
+ while( mbeans.hasNext() )
+ {
+ DomainData domainData = (DomainData) mbeans.next();
+ out.println(" <tr>");
+ out.println(" <td>");
+ out.println(" <li><a href=\"HtmlAdaptor?action=displayMBeans&filter="+domainData.getDomainName()+"\" target=\"ObjectNodeView\">"+domainData.getDomainName()+"</a></li>");
+ out.println(" </td>");
+ out.println(" </tr>");
+ }
+%>
+</table>
+
+</body>
+</html>
Modified: trunk/varia/src/resources/jmx/html/images/logo.gif
===================================================================
(Binary files differ)
Modified: trunk/varia/src/resources/jmx/html/index.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/index.jsp 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/index.jsp 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,2 +1,41 @@
-<%@page contentType="text/html"%>
-<jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+<?xml version="1.0"?>
+<%@page contentType="text/html"
+ import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"
+%>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%
+ String bindAddress = "";
+ String serverName = "";
+ try
+ {
+ bindAddress = System.getProperty("jboss.bind.address", "");
+ serverName = System.getProperty("jboss.server.name", "");
+ }
+ catch (SecurityException se) {}
+
+ String hostname = "";
+ try
+ {
+ hostname = InetAddress.getLocalHost().getHostName();
+ }
+ catch(IOException e) {}
+
+ String hostInfo = hostname;
+ if (!bindAddress.equals(""))
+ {
+ hostInfo = hostInfo + " (" + bindAddress + ")";
+ }
+ %>
+<html>
+<head>
+<title>JBoss JMX Management Console - <%= hostInfo %></title>
+</head>
+<!-- frames -->
+<frameset cols="255,*">
+ <frame name="ObjectFilterView" src="filterView.jsp" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
+ <frame name="ObjectNodeView" src="HtmlAdaptor?action=displayMBeans" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
+ <noframes>A frames enabled browser is required for the main view</noframes>
+</frameset>
+</html>
Modified: trunk/varia/src/resources/jmx/html/inspectMBean.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/inspectMBean.jsp 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/inspectMBean.jsp 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,15 +1,27 @@
<?xml version="1.0"?>
<%@page contentType="text/html"
- import="java.net.*,java.util.*,javax.management.*,javax.management.modelmbean.*,
+ import="java.net.*,java.io.*,java.util.*,javax.management.*,javax.management.modelmbean.*,
org.jboss.jmx.adaptor.control.Server,
org.jboss.jmx.adaptor.control.AttrResultInfo,
org.jboss.jmx.adaptor.model.*,
org.dom4j.io.HTMLWriter,
org.dom4j.tree.FlyweightCDATA,
java.lang.reflect.Array,
- java.io.StringWriter"
+ java.io.StringWriter,
+ java.beans.PropertyEditor,
+ org.jboss.util.propertyeditor.PropertyEditors"
%>
-<%!
+
+<%
+String hostname = "";
+try
+{
+ hostname = InetAddress.getLocalHost().getHostName();
+}
+catch(IOException e){}
+%>
+
+<%!
private static final Comparator MBEAN_FEATURE_INFO_COMPARATOR = new Comparator()
{
public int compare(Object value1, Object value2)
@@ -29,7 +41,7 @@
}
};
- String sep = System.getProperty("line.separator", "\n");
+ String sep = System.getProperty("line.separator","\n");
public String fixDescription(String desc)
{
@@ -40,31 +52,50 @@
return desc;
}
- public String fixValue(Object value)
- {
- if (value == null)
- return null;
+ public String fixValue(Object value)
+ {
+ if (value == null)
+ return null;
+ String s = String.valueOf(value);
+ StringWriter sw = new StringWriter();
+ HTMLWriter hw = new HTMLWriter(sw);
+ try
+ {
+ // hw.write(s); // strips whitespace
+ hw.write(new FlyweightCDATA(s));
+ s = sw.toString();
+ }
+ catch(Exception e)
+ {
+ }
+ return s;
+ }
+
+ public String fixValueForAttribute(Object value)
+ {
+ if (value == null)
+ return null;
String s = String.valueOf(value);
- StringWriter sw = new StringWriter();
- HTMLWriter hw = new HTMLWriter(sw);
- try
- {
- // hw.write(s); // strips whitespace
- hw.write(new FlyweightCDATA(s));
- s = sw.toString();
- }
- catch(Exception e)
- {
- }
- return s;
- }
- public String quoteName(String name)
- {
- String sname = name.replace("\"", """);
- sname = name.replace("\'", "'");
- return sname;
- }
+ StringWriter sw = new StringWriter();
+ HTMLWriter hw = new HTMLWriter(sw);
+ try
+ {
+ hw.write(s);
+ s = sw.toString();
+ }
+ catch(Exception e)
+ {
+ }
+ return s;
+ }
+ public String quoteName(String name)
+ {
+ String sname = name.replace("\"", """);
+ sname = name.replace("\'", "'");
+ return sname;
+ }
+
%>
<!DOCTYPE html
@@ -72,31 +103,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
+
<head>
<title>MBean Inspector</title>
<link rel="stylesheet" href="style_master.css" type="text/css" />
<meta http-equiv="cache-control" content="no-cache" />
</head>
-<body>
<jsp:useBean id='mbeanData' class='org.jboss.jmx.adaptor.model.MBeanData' scope='request'/>
-
<%
if(mbeanData.getObjectName() == null)
{
%>
-<jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+<jsp:forward page="/" />
<%
}
ObjectName objectName = mbeanData.getObjectName();
String objectNameString = mbeanData.getName();
String quotedObjectNameString = quoteName(mbeanData.getName());
MBeanInfo mbeanInfo = mbeanData.getMetaData();
-
MBeanAttributeInfo[] attributeInfo = mbeanInfo.getAttributes();
MBeanOperationInfo[] operationInfo = mbeanInfo.getOperations();
- Arrays.sort(attributeInfo, MBEAN_FEATURE_INFO_COMPARATOR);
+ //FIXME: Seems to create ArrayIndexOutofBoundsException when uncommented
+ /*Arrays.sort(attributeInfo, MBEAN_FEATURE_INFO_COMPARATOR);
HashMap operationInfoIndexMap = new HashMap();
for (int a = 0; a < operationInfo.length; a++)
@@ -106,306 +136,255 @@
}
Arrays.sort(operationInfo, MBEAN_FEATURE_INFO_COMPARATOR);
+ */
%>
-<img src="images/logo.gif" align="right" border="0" alt="" />
+<body leftmargin="10" rightmargin="10" topmargin="10">
-<h1>JMX MBean View</h1>
+<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
+ <tr>
+ <td height="105" align="center"><h1>JMX MBean View</h1><%= hostname %></td>
+ <td height="105" align="center" width="300" nowrap>
+ <p>
+ <input type="button" value="Back to Agent" onClick="javascript:location='HtmlAdaptor?action=displayMBeans'"/>
+ <input type="button" value="Refresh MBean View" onClick="javascript:location='HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(request.getParameter("name"),"UTF-8") %>'"/>
+ </p>
+ <%= new java.util.Date() %>
+ </td>
+ </tr>
+</table>
-<h3><%= objectNameString %></h3>
+
<%
Hashtable properties = objectName.getKeyPropertyList();
int size = properties.keySet().size();
%>
- <table class="ObjectName" cellspacing="0" cellpadding="5">
- <tr>
- <td class="nameh" rowspan="<%= size + 1 %>">Name</td>
- <td class='sep'>Domain</td>
- <td class='sep'><%= objectName.getDomain() %></td>
- </tr>
+
+<!-- 1 -->
+
+<table width="100%" cellspacing="1" cellpadding="1" border="1" align="center">
+ <tr><th rowspan="<%= size + 1 %>">Name</th><td><b>Domain</b></td><td><%= objectName.getDomain() %></td></tr>
<%
Iterator it = properties.keySet().iterator();
while( it.hasNext() )
{
- String key = (String) it.next();
- String value = (String) properties.get( key );
-%>
- <tr>
- <td class='sep'><%= key %></td>
- <td class='sep'><%= value %></td>
- </tr>
-<%
+ String key=(String)it.next();
+ String val=(String)properties.get(key);
+ out.println(" <tr><td><b>"+key+"</b></td><td>"+val+"</td></tr>");
}
%>
- <tr>
- <td class='nameh'>Java Class</td>
- <td colspan="3"><jsp:getProperty name='mbeanData' property='className'/></td></tr>
- <tr><td class='nameh'>Description</td>
- <td colspan="3" class="adescription">
- <%= fixDescription(mbeanInfo.getDescription())%>
- </td>
- </tr>
+ <tr><th>Java Class</th><td colspan="2"><jsp:getProperty name='mbeanData' property='className'/></td></tr>
+ <tr><th>Description</th><td colspan="2"><%= fixDescription(mbeanInfo.getDescription())%></td></tr>
</table>
-<p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
- 
-<a href='HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Refresh MBean View</a>
-</p>
-
+<!-- 2 -->
+<br/>
<form method="post" action="HtmlAdaptor">
- <input type="hidden" name="action" value="updateAttributes" />
- <input type="hidden" name="name" value='<%= quotedObjectNameString %>'>
- <table class="AttributesClass" cellspacing="0" cellpadding="5">
- <tr class="AttributesHeader">
- <th width="25%">
- <span class='aname'>Attribute Name</span> <span class='aaccess'>(Access)</span><br/>
- <span class='atype'>Type</span> <br/>
- <span class='adescription'>Description</span> <br/>
- </th>
- <th width="75%" class='aname'>Attribute Value</th>
- </tr>
+ <input type="hidden" name="action" value="updateAttributes" />
+ <input type="hidden" name="name" value="<%= quotedObjectNameString %>" />
+ <table width="100%" cellspacing="1" cellpadding="1" border="1" align="center">
+ <tr>
+ <th>Attribute Name</th>
+ <th>Access</th>
+ <th>Type</th>
+ <th>Description</th>
+ <th>Attribute Value</th>
+ </tr>
<%
- 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() )
+ boolean hasWriteableAttribute=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";
+ hasWriteableAttribute=true;
+ }
+ String attrDescription = fixDescription(attrInfo.getDescription());
+ out.println(" <tr>");
+ out.println(" <td class='param'>"+attrName+"</td>");
+ out.println(" <td align='center'>"+access+"</td>");
+ out.println(" <td>"+attrType+"</td>");
+ out.println(" <td>"+attrDescription+"</td>");
+ out.println(" <td>");
+ out.println(" <pre>");
+
+ if( attrInfo.isWritable() )
+ {
+ String readonly = attrResult.editor == null ? "class='readonly' readonly" : "class='writable'";
+ if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") )
{
- access += "W";
- hasWriteable = true;
+ Boolean value = attrValue == null || "".equals( attrValue ) ? null : Boolean.valueOf(attrValue);
+ String trueChecked = (value == Boolean.TRUE ? "checked" : "");
+ String falseChecked = (value == Boolean.FALSE ? "checked" : "");
+ String naChecked = value == null ? "checked" : "";
+ out.print("<input type='radio' name='"+attrName+"' value='True' "+trueChecked+"/>True");
+ out.print("<input type='radio' name='"+attrName+"' value='False' "+falseChecked+"/>False");
+ // For wrappers, enable a 'null' selection
+ if ( attrType.equals( "java.lang.Boolean" ) && PropertyEditors.isNullHandlingEnabled() )
+ {
+ out.print("<input type='radio' name='"+attrName+"' value='' "+naChecked+"/>True");
+ }
+
}
- String attrDescription = fixDescription(attrInfo.getDescription());
-%>
- <tr>
- <td class='sep'>
- <span class='aname'><%= attrName %></span> <span class='aaccess'>(<%= access %>)</span> <br/>
- <span class='atype'><%= attrType %></span> <br/>
- <span class='adescription'><%= attrDescription %></span> <br/>
- </td>
- <td class='sep'>
-<%
- if( attrInfo.isWritable() )
+ else if( attrInfo.isReadable() )
{
- String readonly = attrResult.editor == null ? "readonly='readonly'" : "";
- if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") )
- {
- // Boolean true/false radio boxes
- Boolean value = Boolean.valueOf(attrValue);
- String trueChecked = (value == Boolean.TRUE ? "checked='checked'" : "");
- String falseChecked = (value == Boolean.FALSE ? "checked='checked'" : "");
-%>
- <input type="radio" name="<%= attrName %>" value="True" <%=trueChecked%>/>True
- <input type="radio" name="<%= attrName %>" value="False" <%=falseChecked%>/>False
-<%
- }
- else if( attrInfo.isReadable() )
- { // Text fields for read-write string values
- attrValue = fixValue(attrValue);
- if (String.valueOf(attrValue).indexOf(sep) == -1)
- {
-%>
- <input class="iauto" type="text" name="<%= attrName %>" value="<%= attrValue %>" <%= readonly %>/>
-<%
- }
- else
- {
-%>
- <textarea cols="80" rows="10" nowrap='nowrap' type="text" name="<%= attrName %>" <%= readonly %>><%= attrValue %></textarea>
-<%
- }
- }
- else
- { // Empty text fields for write-only
-%>
- <input class="iauto" type="text" name="<%= attrName %>" <%= readonly %>/>
-<%
- }
+ attrValue = fixValueForAttribute(attrValue);
+ if (String.valueOf(attrValue).indexOf(sep) == -1)
+ {
+ out.print("<input type='text' size='80' name='"+attrName+"' value='"+attrValue+"' "+readonly+"/>");
+ }
+ else
+ {
+ out.print("<textarea cols='80' rows='10' type='text' name='"+attrName+"' "+readonly+">"+attrValue+"</textarea>");
+ }
}
else
{
- if( attrType.equals("[Ljavax.management.ObjectName;") )
- {
- // Array of Object Names
- ObjectName[] names = (ObjectName[]) Server.getMBeanAttributeObject(objectNameString, attrName);
- if( names != null )
- {
-%>
-<%
- for( int i = 0; i < names.length; i++ )
- {
-%>
- <a href="HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(( names[ i ] + "" )) %>"><%= ( names[ i ] + "" ) %></a>
- <br />
-<%
- }
- }
- }
- // Array of some objects
- else if( attrType.startsWith("["))
- {
- Object arrayObject = Server.getMBeanAttributeObject(objectNameString, attrName);
- if (arrayObject != null) {
- out.print("<pre>");
- for (int i = 0; i < Array.getLength(arrayObject); ++i) {
- out.println(fixValue(Array.get(arrayObject,i)));
- }
- out.print("</pre>");
- }
-
- }
- else
- {
- // Just the value string
-%>
- <pre><%= fixValue(attrValue) %></pre>
-<%
- }
+ out.print("<input type='text' name='"+attrName+"' "+readonly+"/>");
}
- if( attrType.equals("javax.management.ObjectName") )
+ }
+ else
+ {
+ if( attrType.equals("[Ljavax.management.ObjectName;") )
{
- // Add a link to the mbean
- if( attrValue != null )
- {
-%>
- <br />
- <a href="HtmlAdaptor?action=inspectMBean&name=<%= URLEncoder.encode(attrValue) %>">View MBean</a>
-<%
- }
+ ObjectName[] names = (ObjectName[]) Server.getMBeanAttributeObject(objectNameString, attrName);
+ if( names != null )
+ {
+ for( int i = 0; i < names.length; i++ )
+ {
+ out.print("<p align='center'><a href='HtmlAdaptor?action=inspectMBean&name="+URLEncoder.encode(names[i]+"","UTF-8")+">"+names[i]+"</a></p>");
+ }
+ }
}
+ else if( attrType.startsWith("["))
+ {
+ Object arrayObject = Server.getMBeanAttributeObject(objectNameString, attrName);
+ if (arrayObject != null)
+ {
+ for (int i = 0; i < Array.getLength(arrayObject); ++i)
+ {
+ out.println(fixValue(Array.get(arrayObject,i)));
+ }
+ }
+ }
+ else
+ {
+ out.print(fixValue(attrValue));
+ }
+ }
+
+ if( attrType.equals("javax.management.ObjectName") )
+ {
+ if( attrValue != null )
+ {
+ out.print("<p align='center'><a href='HtmlAdaptor?action=inspectMBean&name="+URLEncoder.encode(attrValue,"UTF-8")+"'>View MBean</a></p>");
+ }
+ }
+ out.println(" </pre>");
+ out.println(" </td>");
+ out.println(" </tr>");
+ }
+
+ if(hasWriteableAttribute)
+ {
+ out.println(" <tr><td colspan='4'></td><td class='arg'><p align='center'><input type='submit' value='Apply Changes'/></p></td></tr>");
+ }
%>
- </td>
- </tr>
-<%
- }
-%>
-<% if( hasWriteable )
- {
-%>
- <tr>
- <td colspan='2'>
- <input class='applyb' type="submit" value="Apply Changes" />
- </td>
- </tr>
-<%
- }
-%>
- </table>
+ </table>
</form>
-<p>
-</p>
-
-<% if (operationInfo.length > 0) { %>
-<table class="AttributesClass" cellspacing="0" cellpadding="5">
- <tr class="AttributesHeader">
- <th width="25%">
- <span class='aname'>Operation Name</span><br/>
- <span class='atype'>Return Type</span> <br/>
- <span class='adescription'>Description</span> <br/>
- </th>
- <th width="75%">
- <span class='aname'>Parameters</span>
- </th>
- </tr>
+<!-- 3 -->
+<br/>
<%
- for(int a = 0; a < operationInfo.length; a ++)
- {
- MBeanOperationInfo opInfo = operationInfo[a];
- boolean accept = true;
- if (opInfo instanceof ModelMBeanOperationInfo)
+if (operationInfo.length > 0)
+{
+ out.println(" <table width='100%' cellspacing='1' cellpadding='1' border='1' align='center'>");
+ out.println(" <tr>");
+ out.println(" <th>Operation</th>");
+ out.println(" <th>Return Type</th>");
+ out.println(" <th>Description</th>");
+ out.println(" <th>Parameters</th>");
+ out.println(" </tr>");
+
+ for(int a = 0; a < operationInfo.length; a ++)
+ {
+ MBeanOperationInfo opInfo = operationInfo[a];
+ boolean accept = true;
+ if (opInfo instanceof ModelMBeanOperationInfo)
+ {
+ Descriptor desc = ((ModelMBeanOperationInfo)opInfo).getDescriptor();
+ String role = (String)desc.getFieldValue("role");
+ if ("getter".equals(role) || "setter".equals(role))
{
- Descriptor desc = ((ModelMBeanOperationInfo)opInfo).getDescriptor();
- String role = (String)desc.getFieldValue("role");
- if ("getter".equals(role) || "setter".equals(role))
- {
- accept = false;
- }
+ accept = false;
}
- if (accept)
+ }
+ if (accept)
+ {
+ MBeanParameterInfo[] sig = opInfo.getSignature();
+ out.println(" <tr>");
+ out.println(" <td class='param'>"+opInfo.getName()+"</td>");
+ out.println(" <td>"+opInfo.getReturnType()+"</td>");
+ out.println(" <td>"+fixDescription(opInfo.getDescription())+"</td>");
+ out.println(" <td align='center'>");
+ out.println(" <form method='post' action='HtmlAdaptor'>");
+ out.println(" <input type='hidden' name='action' value='invokeOp'/>");
+ out.println(" <input type='hidden' name='name' value='"+quotedObjectNameString+"'/>");
+ out.println(" <input type='hidden' name='methodIndex' value='"+a+"'/>");
+
+ if( sig.length > 0 )
{
- MBeanParameterInfo[] sig = opInfo.getSignature();
- String methodIndex = (String) operationInfoIndexMap.get(opInfo);
+ out.println(" <table width='100%' cellspacing='1' cellpadding='1' border='0'>");
+ for(int p = 0; p < sig.length; p ++)
+ {
+ MBeanParameterInfo paramInfo = sig[p];
+ String pname = paramInfo.getName();
+ String ptype = paramInfo.getType();
+ if( pname == null || pname.length() == 0 || pname.equals(ptype) )
+ {
+ pname = "arg"+p;
+ }
+ String pdesc = fixDescription(paramInfo.getDescription());
+ out.println(" <tr>");
+ out.println(" <td class='arg'>"+pname+"</td>");
+ out.println(" <td class='arg'>"+ptype+"</td>");
+ out.println(" <td class='arg'>"+pdesc+"</td>");
+ out.print(" <td class='arg' width='50'>");
+ if(ptype.equals("boolean")||ptype.equals("java.lang.Boolean"))
+ {
+ out.print("<input type='radio' name='arg"+p+"' value='True' checked/>True");
+ out.print("<input type='radio' name='arg"+p+"' value='False'/>False");
+ }
+ else
+ {
+ out.print("<input type='text' class='writable' name='arg"+p+"'/>");
+ }
+ out.println("</td>");
+ out.println(" </tr>");
+ }
+ out.println(" </table>");
+ }
+ else
+ {
+ out.println(" [no parameters]<BR>");
+ }
+ out.println(" <input type='submit' value='Invoke'/>");
+ out.println(" </form>");
+ out.println(" </td>");
+ out.println(" </tr>");
+ }
+ }
+ out.println(" </table>");
+}
%>
- <tr>
- <td class='sep'>
- <span class='aname'><%= opInfo.getName() %></span><br/>
- <span class='atype'><%= opInfo.getReturnType() %></span> <br/>
- <span class='adescription'><%= fixDescription(opInfo.getDescription())%></span> <br/>
- </td>
- <td class='sep'>
- <form method="post" action="HtmlAdaptor">
- <input type="hidden" name="action" value="invokeOp" />
- <input type="hidden" name="name" value='<%= quotedObjectNameString %>'>
- <input type="hidden" name="methodIndex" value="<%= methodIndex %>" />
-<%
- if( sig.length > 0 )
- {
-%>
- <table>
-<%
- for(int p = 0; p < sig.length; p ++)
- {
- MBeanParameterInfo paramInfo = sig[p];
- String pname = paramInfo.getName();
- String ptype = paramInfo.getType();
- if( pname == null || pname.length() == 0 || pname.equals(ptype) )
- {
- pname = "arg"+p;
- }
- String pdesc = fixDescription(paramInfo.getDescription());
-%>
- <tr>
- <td>
- <span class='aname'><%= pname %></span><br/>
- <span class='atype'><%= ptype %></span> <br/>
- <span class='adescription'><%= pdesc %></span> <br/>
-<%
- if( ptype.equals("boolean") || ptype.equals("java.lang.Boolean") )
- {
- // Boolean true/false radio boxes
-%>
- <input type="radio" name="arg<%= p%>" value="True" checked='checked'>True
- <input type="radio" name="arg<%= p%>" value="False" />False
-<%
- }
- else
- {
-%>
- <input type="text" class="iauto" name="arg<%= p%>" />
-<%
- }
-%>
- </td>
- </tr>
-<%
- } // parameter list
-%>
- </table>
-<%
- } // has parameter list
-%>
- <input type="submit" value="Invoke" />
- </form>
-</td></tr>
-<%
- } // mbean operation
- } // all mbean operations
-%>
-</table>
-<%
-} // has mbean operation
-%>
-
</body>
</html>
-
Modified: trunk/varia/src/resources/jmx/html/style_master.css
===================================================================
--- trunk/varia/src/resources/jmx/html/style_master.css 2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/style_master.css 2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,90 +1,83 @@
-/* From http://www.jboss.com/themes/jbosstheme/style/common.css */
-
-body { font: 11px Helvetica, Arial, sans-serif; }
-
-h1 { color: #000000; line-height: 22px; font: 20px Helvetica, Arial, sans-serif; }
-h2 { color: #000000; line-height: 18px; font: bold 16px Helvetica, Arial, sans-serif; margin-top: 16px; }
-h3 { color: #000000; line-height: 16px; font: bold 14px Helvetica, Arial, sans-serif; margin-top: 8px; }
-h4 { color: #000000; line-height: 16px; font: 14px Helvetica, Arial, sans-serif; margin-top: 8px; }
-h5 { color: #000000; line-height: 14px; font: 12px Helvetica, Arial, sans-serif; margin-top: 8px; }
-
-th {
- font-weight: bold;
- text-align: left;
- vertical-align: top;
- background-color : #EEEEFF;
- border: 1px solid black;
+A{
+text-decoration:underline
}
-table.ObjectName {
- margin-bottom: 1em;
- border: 1px solid black;
+A:LINK{
+color:#000099
}
-table.AttributesClass {
- width: 100%;
- margin-bottom: 1em;
- border: 1px solid black;
+A:VISITED{
+color:#880088
}
-td.nameh {
- background-color : #EEEEFF;
- border: 1px solid #444444;
+A:HOVER{
+color:#FF6600
}
-td.sep {
- vertical-align: top;
- border-width: thin;
- border: 1px solid #DDDDDD;
- margin-right: 0px;
- margin-left: 0px;
+A:ACTIVE{
+color:#FF0000
}
-*.applyb {
- font-size: larger;
- text-align: center;
+BODY{
+background-color:#FFFFFF;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
}
-input.iauto {
- width: 80%;
- font-size: 12px;
+H1{
+color:#000099;
+font-size:16pt;
+font-weight:bold
}
-
-*.aname {
- font-size: large;
-}.aaccess {
- font-size: small;
- font-weight: normal;
- color: gray;
+H2{
+margin:2px;
+padding:2px;
+font-size:12pt;
+font-weight:bold
}
-*.atype {
- font-size: small;
- color: gray;
+H3{
+margin:2px;
+padding:2px;
+font-size:10pt;
+font-weight:normal
}
-*.adescription {
- font-size: small;
- color: navy;
- font-style: oblique;
+IMG{
+border:0
}
-* .error {
- color: red;
+INPUT{
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
}
-
-A:ACTIVE {
- color:Red;
- background-color: #DEB887;
- text-decoration : underline;
+INPUT.readonly{
+border:1px solid #999999;
+background-color:#C0C0C0
}
-
-A:HOVER {
- color:Red;
- text-decoration : underline;
+INPUT.writable{
+border:1px solid #999999;
+background-color:#FFFFFF
}
-
-A:LINK {
- color:#000099;
- text-decoration : underline;
+TD{
+background-color:#E0E0E0;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
}
-
-A:VISITED {
- color:Purple;
- text-decoration : underline;
+TD.arg{
+background-color:#BBBBBB;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
}
-
+TD.param{
+color:#880000;
+font-size:8pt;
+font-weight:bold;
+font-family:Tahoma,Verdana,sans-serif
+}
+TH{
+cellspacing:2px;
+padding-bottom:1px;
+padding-left:4px;
+padding-right:4px;
+padding-top:1px;
+background-color:#999999;
+color:#000000;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt;
+font-weight:bold
+}
pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
@@ -92,6 +85,8 @@
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
-
-
-
+* .error {
+ font-size: 8pt;
+ color: red;
+}
+
More information about the jboss-cvs-commits
mailing list