Jak*_*b C 34 java spring jmx jboss5.x
我的配置MBean的持久性存在问题.我的配置:
<bean id="adminMBean" class="pl.mobileexperts.catchme.mbeans.AdminSettingsMBean"></bean>
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="assembler" ref="assembler" />
<property name="autodetect" value="true" />
<property name="namingStrategy" ref="namingStrategy"/>
</bean>
<bean id="attributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />
<bean id="namingStrategy" class="org.springframework.jmx.export.naming.MetadataNamingStrategy">
<property name="attributeSource" ref="attributeSource" />
</bean>
<bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource" ref="attributeSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)
@ManagedResource(objectName = "pl.mobileexperts.catchme:name=adminMBean",
description ="admin settings",
persistPolicy = "OnUpdate",
persistLocation = "c:/", persistName = "adminSettings.jmx")
public class AdminSettingsMBean {
private boolean moderatorModeEnabled;
public AdminSettingsMBean() {
}
@ManagedAttribute(persistPolicy = "OnUpdate")
public boolean isModeratorModeEnabled() {
return moderatorModeEnabled;
}
@ManagedAttribute(persistPolicy = "OnUpdate")
public void setModeratorModeEnabled(boolean moderatorModeEnabled) {
this.moderatorModeEnabled = moderatorModeEnabled;
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是在属性更改后保存状态(保存到文件或元数据 - 而不是数据库).JBoss重启后,我的MBean初始化为标准值.似乎PersistPolicy无效......我试图实现PersistentMBean,但从未调用store()和load().我发现它可能是JBoss JMX实现问题.还有一些人在MBean中使用AOP和带注释的方法来存储它们.所有这些帖子都是从2008年到2010年,所以也许有些事情发生了变化?
我的JBoss配置是默认的(jboss-service.xml)
我认为你的问题是 JMX 的 JBoss 实现。根据 JSR160,指定persistPolicy=OnUpdate属性应该导致每次属性更新时(从JSR160 1.4 开始):
\n\n\npersistPolicy - 定义此 MBean 中未定义自己的 persistPolicy 的属性的默认持久性策略。具有以下值之一:
\n\n[...]
\n\n\n
\n- OnUpdate - 每次更新属性时都会存储该属性。
\n
这很可能是由 Sun 的 Javadoc 中这个非常奇怪的文本引起的(正如@Pl\xc3\xadnio Pantale\xc3\xa3oPersistMBean所指出的)):
\n\n\n如果“persistPolicy”字段为以下情况,则不要存储 MBean:
\n\n=“从不”
\n\n=“更新时”
\n\n= "onTimer" && now < \'lastPersistTime\' + \'persistPeriod\'
\n
除了向 JBoss 报告此问题(以及向 Sun 报告 Javadoc 问题)之外,您还可以通过使用来解决此问题persistPolicy=Always策略(同样来自 JSR160)来解决此问题:
\n\n\n
\n- 始终 - 这是 OnUpdate 的同义词,出于兼容性原因而被识别。建议应用程序改用 OnUpdate\n。Descriptor 接口的实现(如 DescriptorSupport)可以选择将 persistPolicy 的 \xe2\x80\x9cAlways\xe2\x80\x9d 值替换为 \xe2\x80\x9cOnUpdate\xe2\x80 值\x9d。
\n
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |