0
考慮下面的程序:SpeedoJMXBean不暴露於JConsole的
public class SpeedoJMXBean implements SpeedoListener {
private SpeedoDTO lastData;
private SpeedoBean speedo;
@Required
public void setSpeedo(SpeedoBean speedo) {
this.speedo = speedo;
}
public void init() throws MBeanRegistrationException, InstanceAlreadyExistsException, NotCompliantMBeanException, MalformedObjectNameException {
speedo.addListener(this);
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName = new ObjectName("MineStar:type=Speedometer,name=Statistics");
MineStarMBean impl = new MineStarMBean();
impl.addProperty(new PropertyAdapter("ThreadCount", "Thread Count", "java.lang.Integer") {
public Object getValue() {
return ThreadManagement.getThreadCount();
}
});
impl.addProperty(new PropertyAdapter("Buffered", "Buffered Count", "java.lang.Integer") {
public Object getValue() {
if (lastData == null) return 0;
return lastData.getBuffered();
}
});
impl.addProperty(new PropertyAdapter("EPM", "Events Per Minute", "java.lang.Integer") {
public Object getValue() {
if (lastData == null) return 0;
return lastData.getEventsPerMinute();
}
});
server.registerMBean(impl, objectName);
}
@Override
public void speedoData(SpeedoDTO data) {
lastData = data;
}
@Override
public void connectionPoolData(ConnectionPoolDTO data) {
// not interested at the moment
}
@Override
public void gcActivity(GarbageCollectionDTO gcDTO) {
// not interested at the moment
}
}
的SpeedoBean沒有被暴露在JConsole的MBean的瀏覽器。我需要爲我的外部工具公開Speedo信息。誰能告訴我這裏有什麼問題?
注意 - 這在XML文件中被初始化爲 -
<bean id="speedoJMX" class="com.mincom.env.service.server.gadget.SpeedoJMXBean" init- method="init" scope="singleton"
lazy-init="true">
<property name="speedo">
<ref local="speedo"/>
</property>
</bean>