2012-05-10 16 views
6

मैं वेब सेवाओं का परीक्षण करने के लिए एक एप्लिकेशन विकसित करना चाहता हूं, जो स्वचालित रूप से प्रदान किए गए डब्लूएसडीएल के पैरामीटर का उपयोग करके जेएसएफ फॉर्म उत्पन्न करेगा।WSDL से जावा बीन्स को गतिशील रूप से स्वचालित कैसे करें?

डब्ल्यूएसडीएल यूआरएल उपयोगकर्ता द्वारा प्रदान किया जाता है और मुझे इसे पार्स करने से पहले संचालन के नाम नहीं पता हैं। मैं ऐप को पार्स किए गए संचालन और उसके पैरामीटर से गुजरना चाहता हूं, और उपयुक्त जावा बीन्स को स्वत: उत्पन्न करना चाहता हूं, जिसका उपयोग मैं जेएसएफ फॉर्म उत्पन्न करने के लिए करूंगा।

मैंने सीएक्सएफ और जेएक्स-डब्ल्यूएस का परीक्षण किया है, लेकिन मुझे लगता है कि उन्हें जावा बीन्स बनाने से पहले ऑपरेशन नामों को जानने की जरूरत है। किसी भी डब्लूएसडीएल के लिए पारदर्शी रूप से जावा बीन्स कैसे उत्पन्न करें? मैन्युअल रूप से चल रहा है wsdl2java एक समाधान नहीं है।

+0

अपने प्रोग्राम के अंदर से wsdl2java चलाने के बारे में क्या? –

+1

AFAIK, 'wsdl2java' * .java फ़ाइलों को ऑपरेशन नामों के साथ उत्पन्न करता है, जिन्हें मुझे किसी भी तरह गतिशील रूप से संकलित और आयात करना होता है। मैं इसे कैसे करूँगा, बीन्स बनाने से पहले उनके नाम नहीं जानना? – niutech

उत्तर

4

CXF एक "DynamicClient" (http://cxf.apache.org/javadoc/latest-2.6.x/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.html देखें) होता है। यह wsdl को उत्पन्न करता है, जेएक्सबी ऑब्जेक्ट उत्पन्न करता है और उन्हें संकलित करता है, और एक क्लाइंट लौटाता है जिसका उपयोग संचालन और प्रकार और उनके साथ जुड़े होने के लिए किया जा सकता है।

+0

मैंने सीएक्सएफ डायनेमिक क्लाइंट का उपयोग किया है और यह ठीक काम करता है: 'जैक्सडब्ल्यूडियोनिक क्लाइंटफैक्टरी डीसीएफ = जैक्सडब्ल्यूडियोनिक क्लाइंटफैक्टरी.न्यूइंस्टेंस(); क्लाइंट सी = डीसीएफ.क्रेट क्लाइंट (यूआरएल); एंडपॉइंट ई = सी .getEndpoint(); ServiceInfo si = endpoint.getService()। GetServiceInfos()। (0) प्राप्त करें; बाइंडिंगइन्फो bi = si.get बाइंडिंग्स()। (0) प्राप्त करें; बाइंडिंगऑपरेशनइन्फो बोई: bi.getOperations()। (0); ' – niutech

+0

मैंने ऊपर दिए गए कोड के साथ प्रयास किया लेकिन काम नहीं कर रहा। यह BindingInfo और BindingOperationInfo के लिए .get (0) के बारे में शिकायत करता है। क्या आप कृपया यहां कार्य कोड डाल सकते हैं। धन्यवाद – Motilal

-1

यदि आप मेवेन (और आपको होना चाहिए) का उपयोग कर रहे हैं तो आप डब्लूएसडीएल से कक्षाएं उत्पन्न करने के लिए सीएक्सएफ कोडेजन प्लगइन का उपयोग कर सकते हैं। मेरे ब्लॉग पर एक उदाहरण है; कि इस के लिए इस्तेमाल किया जा सकता है:

http://qwerky-qwerky.blogspot.co.uk/2011/12/programming-without-programming-1.html

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