首页 文章

在JBoss Fuse Fabric中注册MBean(JMX)的最简单方法是什么?

提问于
浏览
1

我为JBoss Fuse Fabric(v7.2.0.redhat-024)中运行的服务编写了自定义 MBean

  • 界面: 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 Fabric,然后启动JConsole并连接到名为org.apache.karaf.man.Main的第一个本地进程(其中有2个) .

但我找不到我的MBean - 我希望在MBean选项卡上看到 com.mycompany.myservice ,但它不存在 .

相反,我可以在这个树节点下看到我的所有数据源jmx bean:

com.mycompany.anotherservice.datasources .

但是,通过设置jmxEnabled = true来配置数据源MBean,因此我不知道如何配置和公开我自己的MBean .

有人可以告诉我这里需要做什么吗?

提前致谢 .

2 回答

  • 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

    我收到了以下代码片段,可以解决这个问题 .

    首先,通过 <property name="bus" ref="cxf"/> 将cxf总线注入blueprint.xml中的bean,并使用它通过InstrumentationManager注册bean:

    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,但我被告知这是正确的解决方案......

相关问题