2013-01-18 20 views
6

Potrzebuję spożywać usługę sieci Web WSDL i kod po stronie klienta Java, który widziałem do tej pory, wygląda na spuchnięty i skomplikowany. Zastanawiałem się, czy w Clojure może istnieć bardziej przejrzyste rozwiązanie, aby być może zaimplementować tę część w Clojure i udostępnić prostszy interfejs API do kodu Java.Spożywanie WSDL w Clojure

Odpowiedz

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

Stworzyłoby to ./some.import.ns/*.class. Więc można tylko use je w swoim projekcie Clojure

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

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

Niestety, nie mogłem się oprzeć ... Chciałbym przepisać 'let' korzystania z makro wątków' -> 'następująco:' [port (-> (some_WS_Service.) .getSome_WS_ServicePort)] '. –

+0

@JacekLaskowski Dzięki. Obiekt proxy AFAIR nie jest bezpieczny dla wątków. Tak więc klasa serwisowa może być utworzona tylko raz, ale należy utworzyć proxy dla każdego wątku. Prawdopodobnie i tak nie byliby w tym samym "let". – mobyte

+0

Dobra uwaga! Nie myślałem o tym. W każdym razie nie sądzę, żeby to coś zmieniło. –