首页 > 其他分享 >J2EE之JMX技术分析

J2EE之JMX技术分析

时间:2023-03-17 21:03:33浏览次数:33  
标签:分析 J2EE String age JMX void println public name


简介

JMX(Java Management Extensions,即Java管理拓展)。JMX可以让JDK自检测程序。常用于管理线程、内存、日志Level、服务重启、系统环境,让开发者可以获取程序运行的状态和动态修改的配置信息。

J2EE之JMX技术分析_System


管理系统和资源的一个接口,定义管理系统与资源间交互标准。


JMX核心类

J2EE之JMX技术分析_JEE_02


1 核心类库:

java.lang.management(VM监控)、javax.management(提供用户拓展)包

javax.management.MBeanServer实现Agent, javax.management.MBeans实现SubAgent。


2 JMX分层:

基础层:MBean(Managed Bean<=>被管理资源),含四种如下:

StandardMBean:需要继承接口,并且接口与实现类有一定的命名规则

DynamicMBean:动态不需要继承接口

ModelMBean:不常用

RequiredModelMBean:继承DynamicMBean,类似


适配层:MBeanServer

提供对资源的注册和管理


接入层:提供远程访问的入口


代码实现:
实现JDK小工具JConsole访问

//MBean接口
public interface HelloMBean {
public String getName();
public void setName(String name);
public String getAge();
public void setAge(String age);
public void helloWorld(String str);
}
//MBean实现类,实现类必须与接口名的保持一致:Hello<=>HelloMBean
public class Hello implements HelloMBean {


private String name;
private String age;


@Override
public String getName() {
System.out.println("get name: " + name);
return name;
}


@Override
public void setName(String name) {
System.out.println("set name: \"" + name + "\",old name: " + this.name);
this.name = name;
}


@Override
public String getAge() {
System.out.println("get age: " + age);
return age;
}


@Override
public void setAge(String age) {
System.out.println("set age:\"" + age + "\", old age: " + this.age);
this.age = age;
}


@Override
public void helloWorld(String str) {
System.out.println("hello world:\"" + str + "\",当前name: \"" + this.name + "\",age: " + age);
}
//!!注意.因为在MBean里没定义,
//!!jconsole的MBean操作里看不到getTelephone只能看到helloWorld()!!
public void getTelephone() {
System.out.println("get telephone");
}
}
//定义Agent层,在启动完之后去看Jconsole如下图所示:
public class HelloAgent {
public static void main(String[] args) throws Exception {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
//命名格式为xx:name=xxxx
ObjectName helloName = new ObjectName("jmxBean:name=hello");
//创建mbean和注册mbean
server.registerMBean(new Hello(), helloName);
Thread.sleep(60 * 60 * 1000);
}
}

J2EE之JMX技术分析_JMX_03



实现JDK小工具浏览器访问

测试这个例子前需要导包如下:


//将对应的Agent改为如下,即可通过web界面进行像Jconsole一样访问

public static void main(String[] args) throws Exception {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName helloName = new ObjectName("jmxBean:name=hello"); //命名格式为xx:name=xxxx
//创建mbean和注册mbean
server.registerMBean(new Hello(), helloName);
ObjectName adapterName = new ObjectName("HelloAgent:name=htmladapter,port=8085");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
server.registerMBean(adapter, adapterName);
adapter.start(); //然后访问http://localhost:8085
}

JMX在Tomcat中实现  todo:

更多待后续更新~~~~~~~~~~~~~~~~~~~~~~~
 

标签:分析,J2EE,String,age,JMX,void,println,public,name
From: https://blog.51cto.com/u_13854513/6128386

相关文章