2012-02-20 19 views
32

私の設定MBeanの永続性に問題があります。私の設定: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> 

@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; 
     } 
} 

私の目標は、プロパティの変更( - DBへのないファイルやメタデータに保存)した後の状態を保存することです。 JBossの再起動後、私のMBeanは標準値で初期化されます。 PersistPolicyが動作していないようです...私はPersistentMBeanを実装しようとしましたが、store()とload()は呼び出されませんでした。 JBoss JMXの実装上の問題である可能性があります。また、AOPを使用してMBeanにメソッドを注釈して保存する人もいました。これらの投稿はすべて2008年から2010年までのものだったので、多分何かが変わったでしょうか?

私のJBossの設定は、私はあなたの問題は、JMXのJBossの実装だと思います(JBossの-service.xmlに)

+0

使用しているJBossのバージョンはどれですか? 'persistPolicy'をサポートしていますか? –

+0

jboss-5.1.0.GA https://community.jboss.org/thread/175100?tstart = 0私は検索を続ける –

+2

私は実際にはわからないいくつかの理由のために、このページはhttps://docs.oracle.com/javase/7/docs/api/javax/management/PersistentMBean.htmlは、実際にコールストア()はありません。常に変更して、役立つかどうか確認してください。 (私もtrullyショックを受けています) –

答えて

1

デフォルトです。自分のpersistPolicyを定義しないこのMBean の属性のデフォルトの永続性ポリシーを定義します -

persistPolicy:JSR160によると、属性のpersistPolicy=OnUpdateを指定すると(JSR160 1.4から)属性が更新されるたびに、永続化をもたらすべきです。次のいずれかの値を取る:

[...]

  • にonUpdate - 属性は属性が更新されるたびに保存されています。

それが最も可能性が高い(@Plínio Pantaleãoで指摘したように)PersistMBean SunのJavadocの中に、この非常に奇妙なテキストによって引き起こされる「persistPolicy」フィールドがある場合

のMBeanを保管したりしないでください。

= "決して"

= "にonUpdate"

=「にOnTimer」& &今<「lastPersistTime」+「persistPeriodを」(日へとJavadocの問題)

のJBossにこれを報告する以外に

、あなたは(persistPolicy=Alwaysポリシーを使用して、それを回避することができるかもしれ再び、)JSR160から:常に

  • - これは 互換性のために認識されているにonUpdate、の同義語です。アプリケーションでは、代わりにOnUpdate を使用することをお勧めします。 DescriptorSupportなどのDescriptorインターフェイスの実装では、 persistPolicyの値「Always」を「OnUpdate」の値に置き換えることができます。