2012-09-14 8 views
9

मैंने पढ़ा है कि एकाधिक थ्रेड में एक एकल JAXBContext ऑब्जेक्ट साझा करना JAXB का उपयोग करने वाले एप्लिकेशन के CPU उपयोग को बहुत कम कर सकता है। इसका सबूत here है। हम वर्तमान में वेब सेवाओं के विकास के लिए अपाचे सीएक्सएफ का उपयोग कर रहे हैं। अपाचे सीएक्सएफ डिफ़ॉल्ट रूप से जेएक्सबी का उपयोग करने के लिए बाध्य है।गैर-स्प्रिंग कॉन्फ़िगरेशन फ़ाइल के माध्यम से एक JAXBContext का उपयोग करने के लिए अपाचे सीएक्सएफ को कॉन्फ़िगर कैसे करें?

  • this के अनुसार, अपाचे CXF एक विन्यास फाइल के माध्यम से JAXBContext का एक उदाहरण का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है।
  • this के अनुसार, हम सीएक्सएफ को कॉन्फ़िगरेशन फ़ाइल की आपूर्ति कर सकते हैं। यह कॉन्फ़िगरेशन फ़ाइल एक स्प्रिंग कॉन्फ़िगरेशन फ़ाइल है।
  • this के अनुसार, अपाचे सीएक्सएफ वसंत के बिना उपयोग किया जा सकता है।

उपरोक्त जानकारी देखते हुए, मैं अपाचे CXF एक स्प्रिंग आधारित विन्यास फाइल का उपयोग किए बिना एक भी JAXBContext उपयोग करने के लिए कैसे कॉन्फ़िगर के बाद से मैं वसंत के बिना सर्वलेट परिवहन का उपयोग करता है एक कोड बेस को देख रहा हूँ? क्या कोई अन्य कॉन्फ़िगरेशन पैरामीटर है जिसे JAXBContext के लिए जोड़ा जा सकता है जो प्रदर्शन को और बेहतर करेगा?

+0

आप अपने प्रश्न का उत्तर मिला? – BST

उत्तर

0

वैश्विक जैक्सबीएन्टेक्स्ट की परिभाषा के आधार पर आप here प्रस्तावित समाधान का प्रयास कर सकते हैं, लेकिन मुझे यकीन नहीं है कि यह जैक्स-आरएस के साथ अच्छा खेलेंगे।

वसंत के बिना एक सरल समाधान,, अपने खुद के @Provider परिभाषित करने के लिए org.apache.cxf.jaxrs.provider.JAXBElementProvider का विस्तार, और CXF में यह रजिस्टर, उदाहरण के लिए openejb-jar.xml फ़ाइल का उपयोग करता है, तो आप tomee साथ काम कर रहे हो जाएगा।

आपका प्रदाता दिखाई देगा:

@Provider 
public class MyJAXBElementProvider<T> extends JAXBElementProvider<T> { 
    public MyJAXBElementProvider() { 
    super(); 
    setSingleJaxbContext(true); 
    setExtraClass(...); 
    } 
} 

और यह की तरह अपने webapp में WEB-INF/openejb-jar.xml फ़ाइल में पंजीकृत करने की आवश्यकता होगी:

<?xml version="1.0"?> 
<openejb-jar> 
    <pojo-deployment class-name="jaxrs-application"> 
    <properties> 
    cxf.jaxrs.providers = mypackage.MyJAXBElementProvider 
    </properties> 
    </pojo-deployment> 
</openejb-jar> 
संबंधित मुद्दे

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