2013-01-18 12 views
6

में डब्लूएसडीएल उपभोग करने के लिए मुझे डब्लूएसडीएल वेब सेवा और जावा क्लाइंट-साइड कोड का उपभोग करने की ज़रूरत है जो मैंने देखा है अब तक फूला हुआ और जटिल दिखता है। मैं सोच रहा था कि क्लोजर में एक क्लीनर समाधान मौजूद हो सकता है ताकि मैं क्लोजर में उस हिस्से को लागू कर सकूं और जावा कोड में एक सरल एपीआई का पर्दाफाश कर सकूं।क्लोजर

उत्तर

9
cd your_project_dir/src 
wsimport -p some.import.ns http://.../service?wsdl 

यह ./some.import.ns/*.class बनाएगा। तो आप कर सकते हैं बस use उन्हें अपने clojure परियोजना में

(ns your.ns ... 
    (:import [some.import.ns some_WS_Service ...])) 

(let [port (-> (some_WS_Service.) 
       .getSome_WS_ServicePort] 
    (... (.someMethod port) ...)) 
+0

क्षमा करें, मैं विरोध नहीं कर सकता है ... मैं 'सूत्रण मैक्रो' उपयोग करने के लिए let' पुनर्लेखन चाहते हैं - इस प्रकार> ':' [बंदरगाह (-> (some_WS_Service।) .getSome_WS_ServicePort)] '। –

+0

@JacekLaskowski धन्यवाद। AFAIR प्रॉक्सी ऑब्जेक्ट थ्रेड सुरक्षित नहीं है। तो सर्विस क्लास को तुरंत चालू किया जा सकता है लेकिन प्रत्येक थ्रेड के लिए प्रॉक्सी बनाई जानी चाहिए। वे शायद वैसे भी 'चलो' में नहीं होंगे। – mobyte

+0

अच्छा बिंदु! मैंने इसके बारे में नहीं सोचा था। वैसे भी मुझे नहीं लगता कि यह कुछ भी बदलता है। –