2010-04-21 16 views
5

मैं एक वेब सेवा विकसित कर रहा हूं जिसे क्लाइंट द्वारा बुलाया जाएगा जो मेरे द्वारा लिखे गए हैं। वेब सेवा में मुझे एप्लिकेशन-व्यापी ऑब्जेक्ट्स का उपयोग करने की आवश्यकता है जो सिस्टम पर एप्लिकेशन के लोड को आसान बनाता है। मैंने this question में दिखाए गए अनुसार मेरे एप्लिकेशन-व्यापी ऑब्जेक्ट्स को कार्यान्वित किया है।वेब सेवा से FacesContext तक पहुंच

मैं अपने ऑब्जेक्ट को किसी जेएसएफ पृष्ठ में निम्न प्रकार के बिना उपयोग कर सकता हूं।

MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName"); 

लेकिन जब यह एक वेब सेवा अनुरोध FacesContext.getCurrentInstance में इसका उपयोग करना() आता है अशक्त देता है। वेब सेवा में FacesContext का उपयोग करने का कोई तरीका है।

+1

आपकी वेबसाइट पर कौन सी एपीआई आधारित है? क्या यह एक ही कंटेनर/संदर्भ में चल रहा है? – BalusC

+0

मैं जैक्स-डब्ल्यूएस का उपयोग कर रहा हूं, लेकिन मैंने कंटेनर के बारे में नहीं सोचा था। – scriptmonster

उत्तर

5

यह शून्य है, क्योंकि वेब सेवाएं फेस सर्विसलेट के माध्यम से नहीं आती हैं। और यह वही तरीका होना चाहिए, क्योंकि वेब सेवाओं के पास जेएसएफ के साथ कुछ लेना देना नहीं है।

मामले में आप a jax-ws कार्यान्वयन का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं:

@Resource 
WebServiceContext context; 

यह WebServiceContext, इंजेक्षन जाएगा जिसके द्वारा आप कर सकते हैं:

ServletContext servletContext = (ServletContext) 
    context.getMessageContext().get(MessageContext.SERVLET_CONTEXT); 

और ServletContext होने, आप अपने एप्लिकेशन-स्कोप ऑब्जेक्ट्स तक पहुंच सकते हैं।

+0

मैं इसे जल्द से जल्द कोशिश करूँगा। धन्यवाद। – scriptmonster

+0

यदि मैं जेएक्स आरएस का उपयोग करता हूं और मैं विचारों से प्राप्त बीन तक पहुंचना चाहता हूं, तो बोझो को हासिल करने का कोई तरीका है? –

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