java mbean_MBean的学习

这里以MBean对象进行演示向服务器注册,调用的过程。

1.MBean接口,接口名必须以MBean结尾

1 packagegofAndJavaSourceStudy.jmxstudy.jmxImpl;2

3 public interfaceHelloMBean {4 //管理属性

5 public voidsetName(String name);6

7 publicString getName();8

9 //管理操作

10 publicString print();11 }

2.实现这个接口,定义属性和行为

1 packagegofAndJavaSourceStudy.jmxstudy.jmxImpl;2

3 importjava.lang.management.ManagementFactory;4

5 importjavax.management.Attribute;6 importjavax.management.MBeanServer;7 importjavax.management.ObjectName;8

9 //MBean的接口和实现类必须位于同一个包中

10

11 public class Hello implementsHelloMBean {12 publicString name;13

14 public voidsetName(String name) {15 //TODO Auto-generated method stub

16 this.name =name;17 }18

19 publicString getName() {20 //TODO Auto-generated method stub

21 returnname;22 }23

24 publicString print() {25 //TODO Auto-generated method stub

26 String result = "Hello," + name + "!!";27 System.out.println(result);28 returnresult;29 }30

31 public static void main(String args[]) throwsException {32 MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); //获取MBeanServer

33 ObjectName name = new ObjectName("fjs:type=hello"); //构造一个名字

34 Hello hello = new Hello(); //创建需要注册的对象

35 mbs.registerMBean(hello, name); //注册这个对象

36

37 mbs.setAttribute(name, new Attribute("Name", "bianjie"));  //属性首字母必须大写38 mbs.invoke(name, "print", null, null);  //第三个参数为Object[],为传入的参数值,第四个参数为String[],指明参数类型39 Thread.sleep(Long.MAX_VALUE);40 }41

42 }

main方法中演示了申请服务器,向服务器注册MBean以及调用的过程。通过objectname,我们可以获得对象的属性,传参调用方法等等。

几个需要注意的点:1.MBean接口和实现类必须位于同一包下2.Thread.sleep()必须有,阻塞线程,否则服务器和对象的生命周期都结束了,也就无管理可言了。所以运用在监控服务器上的应用程序。

3.几个工具

oracle java mission control :可以连接虚拟机,并监控虚拟机的各项指标状态,远程管理应用。今后可以深入研究,应该对性能测试,虚拟机调优作用非常大

简单调用了一下上面注册的MBean

e97d1a03e608aa8ed5b8564f61082a82.png

---------------------------

操作对象:JMX和JNDI都可以对Java类和对象进行查找和定位(JMX中还支持对MBean的查找,并有特定的Query类)。但是在实际应用中,JMX一般用于系统重要的功能性组件;JNDI用来查找部署在服务器中的各个应用程序中的资源,例如servlet、EJB和POJO等,并会为每个应用程序建立独立的隔离的Context.各个Context中,只能定位在这个Context中的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值