JDMK(Java Dynamic Management Kit)是由JAVA的一个应用程序接口(JAVA
API)和一套开发工具组成的。
JDMK是JMX的第一个商业化产品,它是JMX(Java Management
extensions)的一个实现,它提供了通过Java应用程序来管理Java对象的一个框架。
HtmlAdaptorServer在jmxtools.jar包中
它其实也是一个MBean,所以也需要注册入MBeanServer
开启HtmlAdaptorServer后,在IE输入:
http://localhost:8092
可以看到注册的MBean,可以进行管理
http://localhost:8092开启的管理页面比较平淡,功能较少,而且是全西文的页面,说实话不太友好.
jmxtools.jar包还有后续的一些类,如:HttpBody,HtmlPage,HttpRequest,HttpResponse等类,可以进行后续的页面开发,不过没有太大的开发潜力(它毕竟不是前端框架).
1 建立MBeanServer
2 将适配器HtmlAdaptorServer作为MBean注册入MBeanServer
3 将被管理对象(不是类是对象)作为MBean注册入MBeanServer
4 启动HtmlAdaptorServer
- 简单的application下的JDMK HtmlAdaptorServer例子
import com.sun.jdmk.comm.HtmlAdaptorServer;
import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
public class JmxHttpAdaptors
{
// 为HttpAdaptor
MBean
private int port = 8092;
private String host =
"localhost";
public void start() throws
JMException, MalformedURLException
{
// creates new server
MBeanServer server =
MBeanServerFactory.createMBeanServer("test");
// 将HttpAdaptor 对象注册入MBean
ObjectName serverName = new
ObjectName("Http:name=HttpAdaptor");
HtmlAdaptorServer adaptor = new HtmlAdaptorServer();
server.registerMBean(adaptor, serverName);
// 设HttpAdaptor MBean(即serverName)的attributes
if (port > 0)
{
server.setAttribute(serverName, new Attribute("Port", new
Integer(port)));
}
else
{
System.out.println("Incorrect port value " + port);
}
// 下面是一些测试的MBean
// 测试类TestClass代码这里不再给出(无非就是一些简单的POJO 加减乘除之类的方法,自己编就是)
TestClass test1 = new TestClass("t1", new
URL("http://mx4j.sourceforge.net"));
TestClass test2 = new TestClass("t1", new
URL("http://www.sourceforge.net/projects/mx4j"));
server.registerMBean(test1, new
ObjectName("Test:name=test1"));
server.registerMBean(test2, new
ObjectName("Test:name=test2"));
// 执行HttpAdaptor MBean(即serverName)的start()方法
server.invoke(serverName, "start", null, null);
}
public static void
main(String[] str) throws Exception
{
JmxHttpAdaptors thisAdaptor = new JmxHttpAdaptors();
thisAdaptor.start();
}
|
执行程序,查看运行效果
D:\Documents and Settings\mac>netstat -an
Active Connections
Proto Local
Address
Foreign
Address
State
TCP
0.0.0.0:135
0.0.0.0:0
LISTENING
TCP
0.0.0.0:445
0.0.0.0:0
LISTENING
TCP
0.0.0.0:1025
0.0.0.0:0
LISTENING
TCP
0.0.0.0:3306
0.0.0.0:0
LISTENING
TCP
0.0.0.0:6059
0.0.0.0:0
LISTENING
TCP
0.0.0.0:6648
0.0.0.0:0
LISTENING
TCP
0.0.0.0:8092
0.0.0.0:0
LISTENING
|
在IE输入:
http://localhost:8092
可以看到注册的MBean,可以进行管理
|
- spring 下的 JDMK
HtmlAdaptorServer
1.spring 配置文件:
<!--
1.定义自己的bean -->
<bean
id="hello" class="com.machome.bean.Hello" />
<!-- JMX configuration -->
<!-- 2.创建一个mbeanServer bean-->
<!--
如果你的spring是应用在容器中,则不需要此步骤,此步骤用于单独建立独立的MBeanServer中
<bean id="mbeanServer"
class="org.springframework.jmx.support.MBeanServerFactoryBean">
</bean>
-->
<!-- 3.定义assembler bean ,装配bean
MetadataMBeanInfoAssembler是AutodetectCapableMBeanInfoAssembler
唯一实现
spring文档中有专门介绍AutodetectCapableMBeanInfoAssembler的章节
-->
<bean id="assembler"
class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<!--
注入下面定义的jmxAttributeSource-->
<property name="attributeSource"
ref="jmxAttributeSource"/>
</bean>
<!-- 4.定义
解释mbean中Annotation的bean-->
<bean id="jmxAttributeSource"
class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>
<!-- 5. 定义JDMK的HtmlAdaptorServer
bean -->
<bean id="httpJDMKAdaptor"
class="com.sun.jdmk.comm.HtmlAdaptorServer"
>
<property name="port">
<value>8098</value>
</property>
</bean>
<!-- 6.定义MBeanExporter bean, 这是spring jmx最核心的类
-->
<bean id="mBeanExporter"
class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
<!-- 注入上面定义的assembler
两个bean注入-->
<property name="assembler"
ref="assembler"/>
<!--
如果上面步骤2.你单独定义一个mbeanServer,这里需要指定,否则export
bean缺省是去寻找runtime环境内的MBeanserver(通常是容器的MBeanServer)
<property name="server"
ref="mbeanServer"/>
-->
<!-- 将1.里面定义的mbean注册到mBeanExporter bean中
-->
<property name="beans">
<map>
<entry key="mbean:name=hello"
value-ref="hello"/>
|