2013-07-08 54 views
1

我寫了一個自定義的的MBean了JBoss中運行保險絲面料我的服務(v7.2.0.redhat-024)在JBoss Fuse Fabric中註冊MBean(JMX)的最簡單方法是什麼?

  • 接口:com.mycompany.myservice.MyServiceManagerMBean
  • 實現類:com.mycompany.myservice.MyServiceManager

我的MBean被JBoss Fuse註冊或「發現」的最簡單方法是什麼?

我嘗試添加下面我blueprint.xml,但它似乎沒有工作:

<bean id="org.apache.cxf.management.InstrumentationManager" class="org.apache.cxf.management.jmx.InstrumentationManagerImpl"> 
    <property name="enabled" value="true" /> 
    <property name="bus" ref="cxf" /> 
    <property name="usePlatformMBeanServer" value="true" /> 
</bean> 

我運行JBoss的保險絲面料與部署我的服務配置文件,我火了JConsole的,我連接到第一個本地進程命名爲org.apache.karaf.man.Main(其中有2個)。

但是我不能找到我的MBean - 我期待在MBean標籤上看到com.mycompany.myservice,但它不存在。

相反,我可以看到我所有的數據源JMX豆此樹節點下:

com.mycompany.anotherservice.datasources

但是,數據源MBean通過設置jmxEnabled = true進行配置,所以我對如何配置和公開我自己的MBean不太明智。

有人能告訴我我需要做什麼嗎?

在此先感謝。

回答

2

這裏是一個辦法做到這一點在JBoss保險絲blueprint.xml配置

<bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init"> 
    <property name="bundleContext" ref="blueprintBundleContext"/> 
    <property name="mbeans"> 
     <map> 
      <entry value="com.mycompany.myservice:type=admin,name=myadminBean" key-ref="myadminBean"/> 
     </map> 
    </property> 
</bean> 

感謝我的同事Y.H.尋求幫助:)

0

我收到了下面的代碼片段,它應該可以解決這個問題。

首先,通過<property name="bus" ref="cxf"/>注入CXF總線到blueprint.xml一個bean,並使用它來註冊與InstrumentationManager豆:

MyMBean mbean = new MyMBeanImpl(); 
    InstrumentationManager imanager = bus.getExtension(InstrumentationManager.class); 
    final ObjectName objectName = new ObjectName("org.apache.cxf:type=foo,name=bar"); 
    imanager.register(mbean, objectName); 

我仍然有問題,這一點,bus.getExtension(InstrumentationManager.class)返回null,但我告訴他們這是正確的解決方案...

+0

注意:這段代碼在純Java中工作,但沒有在使用JBoss Fuse框架工作 - 請參閱我的其他答案,瞭解它如何在JBoss Fuse中工作 – vikingsteve

相關問題