2012-02-20 25 views
32

मुझे मेरी कॉन्फ़िगरेशन एमबीन की दृढ़ता के साथ कोई समस्या है। मेरे विन्यास:एमबीन दृढ़ता

<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 से नहीं दाखिल या मेटाडाटा को बचाने के लिए) एक संपत्ति परिवर्तन के बाद राज्य को बचाने के लिए है। जेबॉस पुनरारंभ करने के बाद, मेरे एमबीन मानक मूल्यों के साथ शुरू किया गया है। ऐसा लगता है कि PersistPolicy काम नहीं कर रहा है ... मैंने PersistentMBean को लागू करने का प्रयास किया, लेकिन स्टोर() और लोड() कभी नहीं बुलाया गया था। मैंने पाया कि यह एक जेबॉस जेएमएक्स कार्यान्वयन मुद्दा हो सकता है। इसके अलावा कुछ लोगों ने उन्हें स्टोर करने के लिए एमबीएन में एओपी और एनोटेटेड विधियों का इस्तेमाल किया। ये सभी पोस्ट 2008-2010 से थीं, तो शायद कुछ बदल गया है?

मेरे JBoss config डिफ़ॉल्ट (jboss-service.xml)

+0

जेबॉस का कौन सा संस्करण आप उपयोग कर रहे हैं? क्या यह '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 मुझे बताता है कि अद्यतन पर वास्तव में कॉल स्टोर नहीं()। हमेशा बदलने की कोशिश करें और देखें कि क्या मदद करता है। (मैं भी सचमुच चौंक गया हूँ) –

उत्तर

1

मुझे लगता है कि तुम्हारी समस्या JMX की JBoss कार्यान्वयन है। इस MBean में विशेषताओं है कि उनके अपने persistPolicy परिभाषित नहीं करते के लिए परिभाषित करता है डिफ़ॉल्ट हठ नीति -

persistPolicy: JSR160 के अनुसार, एक विशेषता के लिए निर्दिष्ट करने persistPolicy=OnUpdate (JSR160 1.4 से) हर बार विशेषता अद्यतन किया जाता है बने में परिणाम चाहिए । निम्न मानों में से एक पर ले जाता है:

[...]

  • OnUpdate - विशेषता हर बार विशेषता अद्यतन किया जाता है संग्रहित है।

यह सबसे अधिक संभावना PersistMBean के लिए सूर्य की जावाडोक में यह बहुत ही अजीब पाठ (के रूप में @Plínio Pantaleão द्वारा बताया) के कारण होता है:

MBean की दुकान मत करो अगर 'persistPolicy' फ़ील्ड है:

= "कभी नहीं"

= "onUpdate"

= "OnTimer" & & अब < 'lastPersistTime' + 'persistPeriod'

JBoss (और सूर्य को जावाडोक मुद्दा), तो आपको persistPolicy=Always नीति का उपयोग करके इसे हल करने के लिए सक्षम हो सकते को यह रिपोर्टिंग के अलावा (फिर, JSR160 से):

  • हमेशा - यह OnUpdate, जो संगतता कारणों के लिए मान्यता प्राप्त है की एक पर्याय है। यह अनुशंसा की जाती है कि अनुप्रयोग इसके बजाय OnUpdate का उपयोग करें। वर्णनकर्ता इंटरफ़ेस का कार्यान्वयन, जैसे कि वर्णनकर्ता समर्थन, "ऑनअपडेट" के मान द्वारा persistPolicy के लिए "हमेशा" के मान को प्रतिस्थापित करने का विकल्प चुन सकता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^