JMX 入门学习-(1)创建一个MBean
2006-10-22 23:30
369 查看
JMX是java 管理扩展的简称,主要是为系统的管理提供一套有效的机制,我使用jmx主要是为开发中一些需要系统配置的地方提供热部署的功能。这只是我的简单理解。也希望大家能给我多提批评意见,帮助我提高自己的知识水平。
使用JMX比较简单,首先到Sun 主页上下载JMX的参考实现。http://java.sun.com/products/JavaManagement/download.html
第一步:写一个MBean 它与普通的Bean 基本上没有什么区别。不过一定要用MBean结尾.
//首先定义一个接口,注意该接口一定要用MBean结尾,这是开发stardMBean的规则。
package com.jmx.simple.demo;
public interface HelloMBean {
public String getName();
public void setName(String name);
public void sayHello(String value);
}
//用一个类来实现刚才定义的接口.
package com.jmx.simple.demo;
public class Hello implements HelloMBean {
private String name="";
public String getName() {
// TODO Auto-generated method stub
return this.name;
}
public void sayHello(String value) {
// TODO Auto-generated method stub
System.out.println(name+" says: "+value);
}
public void setName(String name) {
// TODO Auto-generated method stub
this.name=name;
}
}
//将刚才开发的MBean注册 MBean server中,我使用的是jboss 4.4的jmx server,具体做法如下。
//首先我定义了一个servlet ,将下面代码覆盖你的init()函数如下:
public void init() throws ServletException {
// Put your code here
List serverList = MBeanServerFactory.findMBeanServer(null);//获取server列表.
MBeanServer server = (MBeanServer) serverList.get(0);//获得默认的server.
String DOMAIN = server.getDefaultDomain();//获得server的域,在jboss中该域为jboss.
final Hello helloMBean = new Hello(); //定义我们开发的MBean地实现.
ObjectName hello= null;//这是注册MBean的命名对象.
try {
hello = new ObjectName("jboss.jmx:name=HelloJMX");
server.registerMBean(helloMBean, hello);//注册前面定义好的MBean.
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstanceAlreadyExistsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanRegistrationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotCompliantMBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//然后在web.xml中把这个servlet定义为自动启动。
//在web.xml找到你刚才定义的servlet配置的地方。然后加入<load-on-startup>1</load-on-startup>.可以参考我的配置。
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>JmxInitialize</servlet-name>
<servlet-class>com.jmx.servlets.jboss.JmxInitialize</servlet-class>
<load-on-startup>1</load-on-startup><!--这个地方是新加的-->
</servlet>
<servlet-mapping>
<servlet-name>JmxInitialize</servlet-name>
<url-pattern>/servlet/JmxInitialize</url-pattern>
</servlet-mapping>
//启动jboss,在ie中输入http://localhost:8080/jmx-console.
可以看到我们刚才注册的MBean ;name=HelloJMX
关于jmx的使用我想不用我太多说了吧。欢迎大家多提意见。
使用JMX比较简单,首先到Sun 主页上下载JMX的参考实现。http://java.sun.com/products/JavaManagement/download.html
第一步:写一个MBean 它与普通的Bean 基本上没有什么区别。不过一定要用MBean结尾.
//首先定义一个接口,注意该接口一定要用MBean结尾,这是开发stardMBean的规则。
package com.jmx.simple.demo;
public interface HelloMBean {
public String getName();
public void setName(String name);
public void sayHello(String value);
}
//用一个类来实现刚才定义的接口.
package com.jmx.simple.demo;
public class Hello implements HelloMBean {
private String name="";
public String getName() {
// TODO Auto-generated method stub
return this.name;
}
public void sayHello(String value) {
// TODO Auto-generated method stub
System.out.println(name+" says: "+value);
}
public void setName(String name) {
// TODO Auto-generated method stub
this.name=name;
}
}
//将刚才开发的MBean注册 MBean server中,我使用的是jboss 4.4的jmx server,具体做法如下。
//首先我定义了一个servlet ,将下面代码覆盖你的init()函数如下:
public void init() throws ServletException {
// Put your code here
List serverList = MBeanServerFactory.findMBeanServer(null);//获取server列表.
MBeanServer server = (MBeanServer) serverList.get(0);//获得默认的server.
String DOMAIN = server.getDefaultDomain();//获得server的域,在jboss中该域为jboss.
final Hello helloMBean = new Hello(); //定义我们开发的MBean地实现.
ObjectName hello= null;//这是注册MBean的命名对象.
try {
hello = new ObjectName("jboss.jmx:name=HelloJMX");
server.registerMBean(helloMBean, hello);//注册前面定义好的MBean.
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstanceAlreadyExistsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanRegistrationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotCompliantMBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//然后在web.xml中把这个servlet定义为自动启动。
//在web.xml找到你刚才定义的servlet配置的地方。然后加入<load-on-startup>1</load-on-startup>.可以参考我的配置。
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>JmxInitialize</servlet-name>
<servlet-class>com.jmx.servlets.jboss.JmxInitialize</servlet-class>
<load-on-startup>1</load-on-startup><!--这个地方是新加的-->
</servlet>
<servlet-mapping>
<servlet-name>JmxInitialize</servlet-name>
<url-pattern>/servlet/JmxInitialize</url-pattern>
</servlet-mapping>
//启动jboss,在ie中输入http://localhost:8080/jmx-console.
可以看到我们刚才注册的MBean ;name=HelloJMX
关于jmx的使用我想不用我太多说了吧。欢迎大家多提意见。
相关文章推荐
- 机器人操作系统ROS Indigo 入门学习(4)——创建一个ROS Package
- 机器人操作系统ROS Indigo 入门学习(11)——创建一个ROS msg和srv
- SpringBoot入门学习一(如何使用IDEA创建一个SpringBoot应用)
- 机器人操作系统ROS Indigo 入门学习(4)——创建一个ROS Package
- BI入门之而Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(3)创建一个简单的分析
- arcgis api for javascript 4.0 入门学习(1)创建一个2D地图
- Python web入门:Django学习与实践二(简单页面实现和创建一个模板)
- 机器人操作系统ROS Indigo 入门学习(11)——创建一个ROS msg和srv
- MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
- 机器人操作系统ROS Indigo 入门学习(4)——创建一个ROS Package
- 机器人操作系统ROS Indigo 入门学习(11)——创建一个ROS msg和srv
- SpringMVC学习笔记---- 一、SpringMVC基础入门,创建一个HelloWorld程序
- arcgis api for javascript 4.0 入门学习(2)创建一个3D地图
- Spring入门学习——调用一个实例工厂方法创建Bean
- 机器人操作系统ROS Indigo 入门学习(11)——创建一个ROS msg和srv
- 开源喽,特别适合新手学习的一个系统。附有一个快速入门计划!《一句话发布系统》- One Word Delivery System
- cordova学习笔记_创建一个cordova项目
- Object-C入门,创建一个Person工程,给新手用
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一
- Sencha Touch 2入门:创建一个实用的天气应用程序之一