Date: 2004-12-06T13:29:36 Editor: AchimHuegen <[EMAIL PROTECTED]> Wiki: Jakarta HiveMind Wiki Page: JmxPreview URL: http://wiki.apache.org/jakarta-hivemind/JmxPreview
no comment Change Log: ------------------------------------------------------------------------------ @@ -2,7 +2,8 @@ This page describes an HiveMind extension for support of the Java Management Extension (JMX). -= Where to find = += Prototype = + I have a server up and running where you can get an idea of what the jmx code can do. There are two ways of accessing the server. @@ -10,14 +11,16 @@ This uses MX4J HttpAdaptor for rendering the management info, but I wouldn't recommend this because MX4J doesn't support tabular data, graphs or a hierarchical display of the mbeans. 2. My favorite: Get Suns JDK 1.5 and start jconsole. -Change to the advanced tab and enter service:jmx:rmi://80.66.6.180/jndi/rmi://80.66.6.180:8089/jmx as URL. +Change to the advanced tab and enter service:jmx:rmi://localhost/jndi/rmi://80.66.6.180:8089/jmx as URL. JConsole displays the mbeans in a package like tree structure, supports graphs for numerical attributes but has some shortcomings concerning hyperlinks and multiline text attributes. = What you get = + The following information assumes, that you are using JConsole. == Metadata == + You can explore all service points, configuration points and schemas defined in the hivemind descriptors. Look for the mbeans of type 'servicePoint', 'configurationPoint' and 'schema'. @@ -30,7 +33,7 @@ * parameter values of constructor call You can find the tabular data (e.g. properties values) by double clicking the bold attribute value. -A mbean that uses both constructor parameters and properties can be found as test\management\BuilderFactoryManagementTest +A mbean that uses both constructor parameters and properties can be found as test.management.servicePoint.BuilderFactoryManagementTest The metadata functionality is 'experimental'. @@ -46,7 +49,7 @@ Now the complete service interface is available via jmx. (There are some datatype constraints and the servicemodel should be primitive or singleton) -Have a look at the Calculator MBean (test\management\service\Calculator). You can do some calculations on the jconsole operations tab. +Have a look at the Calculator MBean (test.management.service.Calculator). You can do some calculations on the jconsole operations tab. Double click on the 'sum' attribute to get a graph of the sum over time. This is the corresponding service interface : @@ -70,7 +73,7 @@ The results are sent to a newly created mbean. For each service method it displays: number of calls, maximum, minimum, average and last execution duration. -The mbean test\management\service\Calculator\PerformanceCollector displays these values for the Calculator service. +The mbean test.management.service.Calculator.PerformanceCollector displays these values for the Calculator service. So just execute some calculations and watch the statistical data changing. Double clicking the attribute values displays a graph. @@ -80,7 +83,7 @@ Such a monitor can watch the attribute of another mbean (for example the average execution time of a service method) and send notifications, if a treshold is crossed. -The mbean test\management\service\CalculatorSumMonitor monitors the sum attribute of the calculator service. +The mbean test.management.service.CalculatorSumMonitor monitors the sum attribute of the calculator service. = Implementation details = @@ -90,8 +93,15 @@ It is depending on MX4J but is working fine with Sun RI too. The dependency could be broken up, but there is no standardized way for creating an HTMLAdapter. += Remarks = +== Services as MBeans == +It doesn't always make sense to use the service interface as MBean interface like in the calculator example. It would be nice to separate between service and management interface. Problem: As soon as an service model other that primitive is used or the service is intercepted, the management interface is no longer accessible. +The reason is, that interceptors and proxies are limited to a single interface. This is already a problem for standard MBeans, that implement MBean lifecycle events. +There are two possible solutions: + * Interceptors and proxies populate multiple/all interfaces of a service. This was already discussed on the mailing list + * There must be a way to access the core service instance --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
