同時改變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