我们经常打开jconsole可以看到如下的画面
我们可以看到mbean是有属性和操作两个子目录。
属性是可以获取到最新的数据。操作就是执行一些方法。
下面讲如何增加一个自己的mbean。
使用注解定义接口
增加一个mbean可以使用命名规范也可以使用注解。我比较倾向注解。
@MXBean
public interface MyInterface {
void hello();
int getInfo();
String sendInfo(String info);
InfoBo getInfoBo();
}
这里定义了4个方法。给接口增加@MXBean注解。get系列表示的是属性,其他的都是操作。
实现接口
public class MyBean implements MyInterface {
private int num=0;
public void hello() {
num++;
System.out.println("hello");
}
public int getInfo() {
return num;
}
public String sendInfo(String info) {
return info;
}
public InfoBo getInfoBo() {
return new InfoBo(2,"this is bo");
}
}
这里的InfoBo就是一个有两个成员变量的普通javabean。之所以增加这个例子,是因为对象返回在jconsole里显示有点小不同。
注册mbean
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName =new ObjectName("com.xp:name=MyBean,type=mybeans");
server.registerMBean(new MyBean(),objectName);
这里的objectName是path。jmx组织维护是树形结构。
com.xp这个就是外层的包,包下面是type,type下面是name。
打开jsonsole
sendinfo是可以输入值进行调用的
在infoBo里我们只能看到一个对象类
我们需要用鼠标双击值
我们才可以看到数据的数值。
mbean优势
上面介绍了编写mbean的方式,基本所有的开源软件都会编写mbean来进行指标的暴露。这样测试方便。基本只需要一个jconsole就可以做到数据的测试了。同样也有业界的工业标准,例如jmx_exporter转化jmx到prometheus数据,jmx_trans这种直接做转化输出的。编写好mbean之后比较容易和业界标准配合。
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦