2011-10-21 5 views
6

मैं Servicemix 4.3.1 में अपाचे मेष 0.2 का उपयोग कर रहा हूं और एक सेमी: प्रबंधित-सेवा-कारखाना बना रहा हूं। .cfg फ़ाइलों के साथ सेवाओं का निर्माण ठीक काम करता है (#ARIES-584 को छोड़कर), लेकिन .cfg फ़ाइल के गुण सेवा ऑब्जेक्ट में इंजेक्शन नहीं देते हैं। वे ConfigAdmin में ठीक से सेट हो जाते हैं, बस मेरी बीन सेटर विधियों को मेरी कॉन्फ़िगरेशन फ़ाइल में मानों के लिए कभी नहीं बुलाया जाता है।क्या मेष प्रबंधित-सेवा-कारखाने भी गुणों का प्रबंधन करते हैं?

मैं सोच रहा था कि मुझे शायद एक सेमी का उपयोग करना चाहिए: प्रबंधित-गुण या मेरे प्रबंधित-सेवा-कारखाने के अंदर घोंसला जैसा कुछ, लेकिन इसके लिए एक अलग पिड की आवश्यकता होगी, इसलिए सही नहीं लगता है।

यदि मैं संपत्ति टैग नहीं डालता, तो कोई मूल्य कभी भी सेट नहीं हो जाता है। संपत्ति टैग के साथ, केवल डिफ़ॉल्ट मान सेट हो जाता है, लेकिन वास्तविक कॉन्फ़िगरेशन फ़ाइल मान कभी नहीं।

blueprint-sample.xml को छोड़कर, मेष सीएम सबप्रोजेक्ट के उपयोग के लिए मुझे कोई दस्तावेज नहीं मिल रहा है, जो एक प्रबंधित सेवा कारखाने के अंदर प्रबंधित गुण नहीं दिखाता है। मैं वास्तव में Servicemix का उपयोग करने की कोशिश कर रहा हूं, लेकिन हर कोने के आसपास दस्तावेज, टूटी हुई या गायब सुविधाओं, या मूल कार्यक्षमता को प्रभावित करने वाली बग्स गायब हैं।

spring और gemini दोनों दस्तावेज इंगित करते हैं कि उनके प्रबंधित-सेवा-कारखाने के कार्यान्वयन को प्रबंधित गुणों के रूप में भी कार्य करना चाहिए।


foo.xml:

<blueprint> 
    <cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo"> 
    <cm:managed-component class="my.Foo"> 
     <property name="name" value="default /> 
    </cm:managed-component> 
    </cm:managed-service-factory> 
</blueprint> 

IFoo.java

package my; 
public interface IFoo { 
    public String getName(); 
    public void setName(String name); 
} 

Foo.java

package my; 
public class Foo implements IFoo { 
    private String name; 
    public void setName(String name) { 
    this.name = name; 
    System.out.println("name set to: " + name); 
    } 
    public String getName() { 
    return name; 
    } 
} 

my.msf-1.cfg

name=name1 

my.msf-2.cfg

name=name2 

System.out

name set to default 
name set to default 

config: proplist

service.pid = my.msf.xxxxxxx-xx-xx-xxxxxxxxxxxxxxx 
name = name1 
service.factoryPid = my.msf 

service.pid = my.msf.yyyyyyy-yy-yy-yyyyyyyyyyyyyyy 
name = name2 
service.factoryPid = my.msf 
+0

मैं इस वसंत उपयोग करने की कोशिश और गुण सेटर विधि का उपयोग कर मेरी सेवा में कॉन्फ़िग फ़ाइल से ठीक से लोड किया गया ... मैं भी में संपत्ति टैग डाल करने के लिए नहीं था। मैं वसंत का प्रयोग करेंगे, तो , लेकिन मैं वसंत के साथ सेवा-गुण नहीं कर सकता :(... वसंत # ओएसजीआई -747। इसका एकमात्र कामकाजी कार्यान्वयन क्यों नहीं है। –

+0

मैंने इसके लिए डीएस की कोशिश की, और ऐसा लगता है। –

उत्तर

0

मेरा मानना ​​है कि जब आप अपने प्रबंधित घटक तत्व के भीतर एक अतिरिक्त लाइन को जोड़ने के लिए है।

<blueprint> 
    <cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo"> 
    <cm:managed-component class="my.Foo"> 
     <cm:managed-properties persistent-id="" update-strategy="container-managed"/> 
     <property name="name" value="default /> 
    </cm:managed-component> 
    </cm:managed-service-factory> 
</blueprint> 

डिफ़ॉल्ट मूल्य वास्तव में आपके सीएफजी फ़ाइल में जो कुछ भी है उसे अधिलेखित किया जाएगा। यदि यह महत्वपूर्ण है, तो डिफ़ॉल्ट संपत्ति मान सेटर लागू किया जाएगा, उसके बाद उसी संपत्ति सेटटर के साथ सीएफजी के मूल्य के साथ।

इस मामले में मैंने अद्यतन रणनीति के लिए कंटेनर-प्रबंधित किया है। लेकिन आप प्रबंधित घटक का उपयोग कर सकते हैं।

यह मेरे लिए और खराब स्वाद में अनावश्यक लगता है। जब मैं पहले से ही ऐसा कर चुका हूं तो मुझे खाली बीम आईडी के साथ अपने बीन के भीतर एक और प्रबंधित गुणों को सेट करने की आवश्यकता क्यों है? शायद एक बेहतर तरीका है लेकिन यह काम करता प्रतीत होता है।

इसके अलावा, विज्ञापित सेवा गुणों को प्रभावित करने का कोई स्पष्ट तरीका नहीं है। उदाहरण के लिए, हम एक सम्मेलन चाहते हैं कि सेवा के साथ शुरू होने वाली किसी भी सीएफजी गुण: xxx सेवा गुणों के माध्यम से पारित किया जाएगा।

अद्यतन: अपाचे मेष परीक्षण बहुत उपयोगी हैं। वे यहां http://aries.apache.org/downloads/currentrelease.html पाए जा सकते हैं। विशेष रूप से कॉन्फ़िगरेशन प्रबंधन, org.apache.aries.blueprint.cm के लिए एक को देखें। परीक्षण फ़ोल्डर में इसमें कुछ उदाहरण हैं। यह दिखाता है कि सेमी के अलावा: प्रबंधित गुण गुण सेमी के भीतर बाल तत्व: ऊपर दिखाए गए प्रबंधित-घटक, सेवा-गुणों के भीतर सेमी: सेमी-गुण तत्व रखने का विकल्प भी है।

<service-properties> 
    <entry key="key" value="foo3" /> 
    <cm:cm-properties persistent-id="" update="true"/> 
</service-properties> 
संबंधित मुद्दे