2011-09-16 13 views
5

हमारे पास एक केंद्रीय डब्ल्यूएसडीएल फ़ाइल है जो एक वेब सेवा का वर्णन करती है। हम क्लाइंट कोड उत्पन्न करने के लिए सीएक्सएफ का उपयोग करते हैं, लेकिन यह कोड 1 एंडपॉइंट तक बाध्य प्रतीत होता है। मैं एक सीएक्सएफ क्लाइंट कैसे बना सकता हूं जो डब्लूएसडीएल का उपयोग करता है, लेकिन जहां मैं एंडपॉइंट निर्दिष्ट कर सकता हूं? क्या एक यूआरएल में एंडपॉइंट बदलने में कोई तरीका है जो एक ही डब्लूएसडी लागू करता है :?डायनामिक एंडपॉइंट के साथ एक सीएक्सएफ webservice क्लाइंट कैसे बनाएं?

उत्तर

9

यदि other सेवा उसी डब्लूएसडीएल को लागू करती है, जब आप MyClientService ऑब्जेक्ट बनाते हैं, तो आप यूआरएल को नई सेवा के डब्लूएसडीएल को कन्स्ट्रक्टर के पास भेज सकते हैं और यह हम करेंगे। अधिकांश सेवाएं wsdl पर wsdl का पर्दाफाश करती हैं ताकि इसका उपयोग करके "बस काम करें"।

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...") 

जहां proxyMyClientService वस्तु है:

वैकल्पिक रूप से, आप के माध्यम से अंत बिंदु यूआरएल ओवरराइड कर सकते हैं।

+0

"अन्य" सेवा कार्यान्वयन वास्तव में वही wsdl लागू करता है। मैंने जेनरेट कोड की जांच की और मेरे पास एक फैक्ट्री ऑब्जेक्ट है जो मुझे ऑब्जेक्ट देता है। मैं यूआरएल सोफर को निर्दिष्ट करने के तरीके पर कोई रास्ता नहीं देखता .. उस पर कोई संकेत? – Marco

1

आप JaxWsProxyFactoryBean उपयोग कर सकते हैं गतिशील रूप से एक सेवा

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 

factory.setServiceClass(ChangeStudentDetails.class); 
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent"); 
+1

क्या आप 'factory.create()' को कॉल करना नहीं भूल गए थे? – Zarathustra

4

CXF 2.6.1

Client client = ClientProxy.getClient(port); 
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ; 
0

javax.xml.ws.WebServiceException में काम करते हुए फोन करने के लिए: wsdl नहीं मिल सका: वेब विधि XXXX के लिए बाध्यकारी ऑपरेशन जानकारी। org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:125)
com.sun.proxy पर। $ Proxy82.getUser (अज्ञात स्रोत)

पर
यदि यह त्रुटि तब जोड़ने हुई एनोटेशन वेबसाइट सेवा आपके क्लाइंट साइड इंटरफ़ेस में जो पहले से ही सेवा पक्ष पर विकसित है।

मुझे इस समस्या का सामना करना पड़ा, मैंने सीएक्सएफ के साथ वसंत को कॉन्फ़िगर किया है। मैंने पहले से ही सेवा विकसित की है और इसे क्लाइंट से बुलाया है।

आशा है कि इससे मदद मिलेगी।

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