我正在向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通知的组合非常有限,谢谢!
答案 0 :(得分:0)
这是spring config文件中mbeanserver的一个问题。
<bean id="mbeanserver" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="false" />
</bean>
解决了问题