同时改变h1 and h2 object
的属性值,您需要用唯一的名称来注册每个MBean。如果这样做,注册第二个MBean时不会再收到异常。您将不得不分别管理每个bean(即每个Home对象上的属性都是通过单独的MBean设置的)。
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Hello h1 = new Hello();
Hello h2 = new Hello();
mbs.registerMBean(h1, new ObjectName("mBeans:type=Hello-1"));
mbs.registerMBean(h2, new ObjectName("mBeans:type=Hello-2"));
如果你想通过一个MBean的,(在一个MBean的结果对双方您好对象的变化,即改变属性),你可以尝试使用Composite Hello对象和暴露管理在同一时间两个Hello
对象作为一个MBean。
通用接口:
interface IHello {
void setAttribute(int value);
}
单Hello对象:
class Hello implements IHello {
int attribute;
void setAttribute(int value) {
attribute = value;
}
}
复合Hello对象:
class CompositeHello implements IHello {
IHello[] Hellos;
CompositeHome(IHello...hellos) {
super();
this.hellos = hellos;
}
void setAttribute(int value) {
for (IHello hello : hello) {
home.setAttribute(value);
}
}
}
注册复合的MBean:
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Hello h1 = new Hello();
Hello h2 = new Hello();
CompositeHello composite = new CompositeHello(h1, h2);
mbs.registerMBean(composite, new ObjectName("mBeans:type=Hello"));
有不同的名字。 'mBeans:type = Hello,instance = 1'和'mBeans:type = Hello,instance = two' – 2013-04-25 12:22:48