Klient usługi sieciowej Java (najlepszy sposób)

83

Mam kod WSDL innej firmy, muszę napisać kod w języku Java, aby klient usługi sieci Web wywoływał operacje w języku WSDL innej firmy. W tej chwili wygenerowałem kod klienta przy użyciu narzędzia WSDL2JAVA firmy Axis i użyłem XMLbeans do powiązania danych.

  1. Jakie jest najlepsze podejście do tego JAVA?
  2. Czytałem o SAAJ, wygląda na to, że będzie to bardziej szczegółowe podejście?
  3. Czy istnieje inny sposób generowania kodu niż użycie narzędzia WSDL2Java. Może wsimportw innej opcji. Jakie są wady i zalety?
  4. Czy ktoś może wysłać linki do dobrych tutoriali na te tematy?
  5. Jakich opcji potrzebujemy podczas generowania kodu przy użyciu WSDL2Java?

Na początku użyłem kilku podstawowych rzeczy. Teraz mam te opcje

C:\axis2-1.5.1\bin>wsdl2java -uri  mywsdlurl  -o client -p somepackage -d xmlbeans -s -t -ssi
Java Guy
źródło

Odpowiedzi:

163

Jakie jest najlepsze podejście do tego JAVA?

Osobiście NIE użyłbym Osi 2, nawet do programowania po stronie klienta. Oto dlaczego trzymam się od tego z daleka:

  1. Nie podoba mi się jego architektura i nienawidzę jego kontrproduktywnego modelu wdrażania.
  2. Uważam, że jest to projekt niskiej jakości.
  3. Nie podoba mi się jego wydajność (zobacz ten test porównawczy z JAX-WS RI ).
  4. Konfigurowanie zależności to zawsze koszmar (używam Mavena i zawsze muszę walczyć z miliardem zależności) (patrz # 2)
  5. Axis jest do niczego, a Axis2 nie jest lepsza. Nie, to nie jest osobista opinia, istnieje konsensus.
  6. Cierpiałem raz, nigdy więcej.

Jedynym powodem, dla którego Axis wciąż istnieje, jest IMO, ponieważ jest używany w Eclipse od wieków. Dzięki Bogu, zostało to naprawione w Eclipse Helios i mam nadzieję, że Axis2 w końcu umrze. Jest tylko dużo lepszych stacków.

Czytałem o SAAJ, wygląda na to, że będzie to bardziej szczegółowe podejście?

Zrobic co?

Czy istnieje inny sposób generowania kodu niż użycie narzędzia WSDL2Java. Może wsimport w innej opcji. Jakie są wady i zalety?

Tak! Preferujesz stos JAX-WS, taki jak CXF lub JAX-WS RI (możesz też przeczytać o Metro, Metro = JAX-WS RI + WSIT ), są po prostu bardziej eleganckie, prostsze, łatwiejsze w użyciu. W twoim przypadku użyłbym po prostu JAX-WS RI, który jest zawarty w Javie 6, a tym samym wsimport.

Czy ktoś może wysłać linki do dobrych tutoriali na te tematy?

To kolejny profesjonalista, istnieje wiele (dobrej jakości) samouczków dla JAX-WS, zobacz na przykład:

Jakich opcji potrzebujemy podczas generowania kodu przy użyciu WSDL2Java?

Brak opcji, użyj wsimport:)

Zobacz też

Powiązane pytania

Pascal Thivent
źródło
4
Wspaniała robota, dziękuję. Czy mógłbyś również uczynić WSIT link do jakiegoś opisu (np. Do download.oracle.com/docs/cd/E17802_01/webservices/webservices/ ... )
dma_k
@dma_k Gotowe, dodałem link do projektu WSIT (ten, który opublikowałeś jest również dobry, więc czytelnicy mają oba).
Pascal Thivent
1
Dałem ci +1 dawno temu, nawet nie podążając za wszystkimi linkami. Człowieku, który żyje, ten bileblog uderza w nos! :) Jeszcze raz dziękuję za to.
javamonkey79
1
+1 dla JAX-WS. Straciłem wiele dni z Axis2 ... totalny MESS (nie wspominając o tonie zależności)
marcolopes,
1
Hej Pascal, łącze Glen Mazza jest teraz przerwane.
Adeel Ansari
8

Odniosłem dobry sukces, używając Spring WS dla klienta aplikacji usługi sieciowej - zobacz http://static.springsource.org/spring-ws/sites/1.5/reference/html/client.html

Mój projekt wykorzystuje kombinację:

  • XMLBeans (wygenerowane z prostego zadania Maven przy użyciu wtyczki xmlbeans-maven)

  • Spring WS - użycie marshalSendAndReceive () redukuje kod do jednej linii do wysyłania i odbierania

  • some Dozer - mapowanie złożonych XMLBeans na proste ziarna dla GUI klienta

Steve
źródło