0

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

这是我用来注册 mbean 的 spring 配置:

<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 通知组合的资源非常有限,谢谢!

4

1 回答 1

0

这是 spring 配置文件中的 mbeanserver 的问题。

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

解决了这个问题

于 2013-05-08T16:16:08.853 回答