2014-09-24 97 views
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> 

回答

0

我得到了答案。如鏈接Click Here中所提到的,只是將lazy-init更改爲false。

<bean id="speedoJMX" class="com.mincom.env.service.server.gadget.SpeedoJMXBean" init-  method="init" scope="singleton" 
     lazy-init="false">