博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jmx
阅读量:4495 次
发布时间:2019-06-08

本文共 2948 字,大约阅读时间需要 9 分钟。

 

一 jmx joncole 连接

 

2种方式:

方式一:

MBeanServer server = ManagementFactory.getPlatformMBeanServer();        ObjectName objectName = new ObjectName("jmxBean:name=hello");        server.registerMBean(new Hello(), objectName);        // 方式一,启动时指定,代码到此为止        /**         * -Djava.rmi.server.hostname=192.168.57.234         * -Dcom.sun.management.jmxremote.port=8288         * -Dcom.sun.management.jmxremote.authenticate=false         * -Dcom.sun.management.jmxremote.ssl=false         */        // 放大用        Thread.sleep(100000000);

 

方式二:

MBeanServer server = ManagementFactory.getPlatformMBeanServer();        ObjectName objectName = new ObjectName("jmxBean:name=hello");        server.registerMBean(new Hello(), objectName);        /**         * 方式二 代码注册         * 但启动时仍然需要指定 -Djava.rmi.server.hostname=192.168.57.234,否则客户端jconsole无法连接         */        Registry registry = LocateRegistry.createRegistry(8288);        JMXServiceURL jmxServiceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8288/jmxrmi");        JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(jmxServiceURL, null, server);        cs.start();

 

之后jconsole可以

当然也可以自己写client获取jmx connector,并展示HelloMBean的一些信息,属性,及调用其方法,并通过jmx通知感应属性的变更,结合后可做可视化配置中心):

 

访问属性值

给属性赋值

调用其中的方法,可输入参数

 

注意:“属性”取决于接口HelloMBean中的get set函数,而不是其实现类,由jmx自动识别;其它函数识别为“操作”

 

属性        读           接口HelloMBean get开头的函数

               写           接口HelloMBean set开头的函数

操作         接口HelloMBean其它函数

通知         实现类  Hello 去继承 extends NotificationBroadcasterSupport

 

 

http://www.cnblogs.com/dongguacai/p/5900507.html

http://www.cnblogs.com/trust-freedom/p/6842332.html

 

 

 

二  MXBean

当xxxMBean中有自定义类型时,jconsole提示不可用

此时应当用xxxMXBean

 https://www.cnblogs.com/duanxz/p/4474824.html

 

 

三  通知

 

1. JMX中要定义接口必须以xxxMBean的规范定义

2. 得有类实现xxxMBean接口

3. 在实现类中可以继承NotificationBroadcasterSupport来支持通知机制

4. 可以通过n个jconsole client来验证server的通知,验证通过

 

https://www.cnblogs.com/duanxz/p/4493445.html

http://www.cnblogs.com/dongguacai/p/5900507.html

 

 

四   spring

现在,要把任意一个Spring bean转变为MBean,我们所需要做的仅仅是使 用@ManagedResource注解标注bean并使用@ManagedOperation 或@ManagedAttribute注解标注bean的方法。

 

在类级别使用了@ManagedResource注解来标识这个bean应该被导出为 MBean。objectName属性标识了域(Spitter)和MBean的名称(SpittleController)。 spittlesPerPage属性的存取器方法都使用了@ManagedAttribute注解来进行标注,这 表示该属性应该暴露为MBean的托管属性。注意,其实并不需要使用注解同时标注这两个存取 器方法。如果我们选择仅标注setSpittlesPerPage()方法,那我们仍可以通过JMX设置 该属性,但这样的话我们将不能查看该属性的值。相反,如果仅仅标注 getSpittlesPerPage()方法,那我们可以通过JMX查看该属性的值,但无法修改该属性 的值。

同样需要提醒一下,我们还可以使用@ManagedOperation注解替换@ManagedAttribute 注解来标注存取器方法。这会将方法暴露为MBean的托管操作但是并不会把spittlesPerPage属性暴露为MBean 的托管属性。这是因为在暴露MBean功能时,使用@ManagedOperation注解标注方法是严 格限制方法的,并不会把它作为JavaBean的存取器方法。因此,使用@ManagedOperation可 以用来把bean的方法暴露为MBean托管操作,而使用@ManagedAttribute可以把bean的属 性暴露为MBean托管属性。

 

 ManagedResource

属性        读           ManagedAttribute注解get方法

               写           ManagedAttribute注解set方法

操作         ManagedOperation注解的方法

通知         实现NotificationPublisherAware接口

 

 

https://www.cnblogs.com/duanxz/p/3968308.html

https://www.cnblogs.com/duanxz/p/4036619.html

一如既往,spring搞得很复杂

 

转载于:https://www.cnblogs.com/silyvin/p/10364295.html

你可能感兴趣的文章
今天 了解了一下 但是看不到解析xml的底层代码 也没什么东西
查看>>
连接运算符
查看>>
二级LOGO设计代表什么
查看>>
清除sql server2000/2005/2008数据库日志的方法
查看>>
1-3 并发与高并发基本概念.mkv
查看>>
R 连接DB2数据库,并制作词图
查看>>
Struts 2基础知识
查看>>
SQL语法
查看>>
适配器模式(默认适配器)
查看>>
Nginx 配置简述
查看>>
NPOI 导入excel
查看>>
字符测试与映射函数 ctype.h
查看>>
GET请求和POST请求的区别
查看>>
Android的按钮四种点击事件
查看>>
nodejs 不是单线程
查看>>
MacOS使用zsh & oh-my-zsh
查看>>
Java 8
查看>>
Javascript异步机制
查看>>
无序数组排序后的最大相邻差值
查看>>
CSS——img标签消除3px
查看>>