转载请注明出处。
最近工作中需要用到MBean方面的东西,留此纪念!
1、定义MBean 接口
package com.Dengjie.Test;
public interface TestMBean {
public void setLevel(int level);
public int getLevel();
public void printTest();
}
2、实现接口
package com.Dengjie.Test;
import java.util.ArrayList;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
public class Test implements TestMBean{
private int level = 0;
public Test()
{
MBeanServer bs = this.getServer();
try {
ObjectName name = new ObjectName("App:Name=Test,Type=Test");
bs.registerMBean(this,name);
} 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();
}
catch (MalformedObjectNameException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (NullPointerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
private MBeanServer getServer()
{
MBeanServer mbserver = null;
ArrayList mbservers = MBeanServerFactory.findMBeanServer(null);
if (mbservers.size() > 0) {
mbserver = (MBeanServer) mbservers.get(0);
}
if (mbserver != null) {
System.out.println("Found our MBean server");
} else {
mbserver = MBeanServerFactory.createMBeanServer();
}
return mbserver;
}
public void setLevel(int level)
{
this.level = level;
}
@Override
public int getLevel() {
// TODO Auto-generated method stub
return level;
}
@Override
public void printTest() {
// TODO Auto-generated method stub
System.out.println("test");
}
}
3、创建监听
package com.Dengjie.Test;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class TestContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
}
public void contextInitialized(ServletContextEvent arg0) {
try {
new Test();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
1. 修改conf/web.xml 文件,增加如下行在该文件中;
<listener>
<listener-class>com.Dengjie.Test.TestContextListener</listener-class>
</listener>
2. 直接把上述三个文件打成Jar,放在/Lib目录下。
3. 重启tomcat6 server ,使用JConsole 查看。如下图: