Spring JMX和OC4J MBean通知,无法启用

时间:2013-05-08 14:05:22

标签: spring jmx oc4j

我正在向OC4J部署spring应用程序,但是遇到一个奇怪的问题,我可以访问暴露的mbeans,但只使用属性和操作。可以在选项卡下看到通知,但不会使用,因为应该有一个带有应用按钮的复选框以进行订阅。这不存在,而只是布尔值false,表明我肯定没有订阅该通知。

这是我用来注册mbeans的弹簧配置:

<bean id="test" class="com.app.jmx.HomeController"/>

<bean id="MbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="defaultDomain" value="MbeanServer" />
</bean>

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="autodetect" value="false" />
    <property name="server" ref="MbeanServer" />
    <property name="beans">
        <map>
            <entry key=":name=test" value-ref="test" />
        </map>
    </property>
</bean>

以下是用于创建通知的代码

    private String notifications[] = { "increment", "decrement", "reset",
"test" };

public MBeanNotificationInfo[] getNotificationInfo() {
    MBeanNotificationInfo[] info = { new MBeanNotificationInfo(
            notifications, "javax.management.Notification",
            "Notifications set for SimpleNotifier") };
    return info;
}   

这里可以找到没有弹簧的这种工作的例子 http://www.oracle.com/technetwork/middleware/ias/readme-087860.html

对此的任何帮助都将非常感激,因为我发现在线有关Spring,jmx和oc4j与jmx通知的组合非常有限,谢谢!

1 个答案:

答案 0 :(得分:0)

这是spring config文件中mbeanserver的一个问题。

<bean id="mbeanserver" class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="locateExistingServerIfPossible" value="false" />
</bean>

解决了问题