2013-07-08 6 views
1

Я написал обычай MBean для моей службы, работающей в JBoss Fuse Fabric (v7.2.0.redhat-024)Самый простой способ зарегистрировать MBean (JMX) в Jaboss Fuse Fabric?

  • Интерфейс: 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 Fuse ткань с профилем, который развертывает свои услуги, я вспылить JConsole и подключиться к первый локальный процесс с именем org.apache.karaf.man.Main (их 2).

Но я не могу найти свой MBean - я ожидаю увидеть com.mycompany.myservice на вкладке MBean, но его там нет.

В отличии от этого, я могу увидеть все мою DATASOURCE JMX фасоли под этим деревом узла:

com.mycompany.anotherservice.datasources.

Однако средства MBeans источника данных были сконфигурированы путем установки jmxEnabled = true, поэтому я не мудрее о том, как настраивать и выставлять свой собственный MBean.

Может кто-нибудь, пожалуйста, скажите мне, что мне нужно сделать здесь?

Заранее спасибо.

ответ

2

а вот способ сделать это в JBoss Fuse 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

Я получил следующий фрагмент кода, который должен решить эту проблему.

Во-первых, вы впрыскивать CxF автобус в бобе в blueprint.xml через <property name="bus" ref="cxf"/> и использовать его, чтобы зарегистрировать фасоль с 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) возвращает нуль, но мне сказали, что это правильное решение ...

+0

Примечание: этот код работает в простой Java, но не работает с использованием рамки JBoss Fuse - см. мой другой ответ о том, как это может работать в JBoss Fuse – vikingsteve

Смежные вопросы