2013-01-18 17 views
6

Ho bisogno di utilizzare un servizio Web WSDL e il codice lato client Java che ho visto finora sembra gonfio e complicato. Mi chiedevo se una soluzione più pulita potesse esistere in Clojure in modo che potessi forse implementare quella parte in Clojure ed esporre un'API più semplice al codice Java.Consumo WSDL in Clojure

risposta

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

Creerebbe ./some.import.ns/*.class. Quindi, si può solo use loro nel progetto clojure

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

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

Spiacente, non ho saputo resistere ... Mi piacerebbe riscrivere il 'let' di utilizzare la macro filettatura' -> 'come segue:' [porta (-> (some_WS_Service.) .getSome_WS_ServicePort)] '. –

+0

@JacekLaskowski Grazie. L'oggetto proxy AFAIR non è thread-safe. Quindi la classe di servizio potrebbe essere istanziata una volta, ma il proxy dovrebbe essere creato per ogni thread. Probabilmente non sarebbero nello stesso 'let' comunque. – mobyte

+0

Buon punto! Non ci ho pensato. Ad ogni modo, non penso che cambi nulla. –