Java Webservice Client (Bester Weg)

82

Ich habe eine WSDL eines Drittanbieters. Ich muss Code in Java schreiben, damit ein Webdienst-Client die Vorgänge in der WSDL eines Drittanbieters aufruft. Im Moment habe ich den Client-Stub mit dem WSDL2JAVA-Tool von Axis generiert und die XMLbeans für die Datenbindung verwendet.

  1. Was ist der beste Ansatz für diese JAVA?
  2. Ich habe über SAAJ gelesen. Sieht so aus, als würde das eine detailliertere Vorgehensweise sein.
  3. Gibt es eine andere Möglichkeit als die Verwendung des WSDL2Java-Tools, um den Code zu generieren? Vielleicht wsimportin einer anderen Option. Was sind die Vor- und Nachteile?
  4. Kann jemand die Links für einige gute Tutorials zu diesen Themen senden?
  5. Welche Optionen müssen wir beim Generieren des Codes mit WSDL2Java verwenden?

Ich habe anfangs einige grundlegende Dinge benutzt. Jetzt habe ich diese Optionen

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

Antworten:

163

Was ist der beste Ansatz für diese JAVA?

Ich persönlich würde Axis 2 NICHT verwenden, auch nicht für die clientseitige Entwicklung. Hier ist, warum ich mich davon fern halte:

  1. Ich mag seine Architektur nicht und hasse sein kontraproduktives Bereitstellungsmodell.
  2. Ich finde es ein Projekt von geringer Qualität.
  3. Ich mag seine Leistungen nicht (siehe diesen Benchmark gegen JAX-WS RI ).
  4. Es ist immer ein Albtraum, Abhängigkeiten einzurichten (ich benutze Maven und muss immer mit der Unmenge von Abhängigkeiten kämpfen) (siehe # 2).
  5. Axis hat viel gelutscht und Axis2 ist nicht besser. Nein, dies ist keine persönliche Meinung, es besteht ein Konsens.
  6. Ich habe einmal gelitten, nie wieder.

Der einzige Grund, warum es Axis noch gibt, ist IMO, weil es seit Ewigkeiten in Eclipse verwendet wird. Gott sei Dank wurde dies in Eclipse Helios behoben und ich hoffe, dass Axis2 endlich sterben wird. Es gibt einfach viel bessere Stapel.

Ich habe über SAAJ gelesen. Sieht so aus, als würde das eine detailliertere Vorgehensweise sein.

Um was zu tun?

Gibt es eine andere Möglichkeit als die Verwendung des WSDL2Java-Tools, um den Code zu generieren? Vielleicht wsimport in einer anderen Option. Was sind die Vor- und Nachteile?

Ja! Bevorzugen Sie einen JAX-WS-Stack wie CXF oder JAX-WS RI (Sie können auch über Metro, Metro = JAX-WS RI + WSIT lesen ), sie sind einfach eleganter, einfacher und benutzerfreundlicher. In Ihrem Fall würde ich nur JAX-WS RI verwenden, das in Java 6 enthalten ist und somit wsimport.

Kann jemand die Links für einige gute Tutorials zu diesen Themen senden?

Das ist ein weiterer Profi, es gibt viele (qualitativ hochwertige) Tutorials für JAX-WS, siehe zum Beispiel:

Welche Optionen müssen wir beim Generieren des Codes mit WSDL2Java verwenden?

Keine Optionen, benutze wsimport:)

Siehe auch

Verwandte Fragen

Pascal Thivent
quelle
4
Tolle Arbeit, danke. Könnten Sie bitte WSIT auch einen Link zu einer Beschreibung davon machen (z. B. zu download.oracle.com/docs/cd/E17802_01/webservices/webservices/… )
dma_k
@dma_k Fertig, hat einen Link zum WSIT-Projekt hinzugefügt (der von Ihnen gepostete ist auch ein guter, sodass die Leser beide haben).
Pascal Thivent
1
Ich habe dir vor langer Zeit eine +1 gegeben, ohne allen Links zu folgen. Mann am Leben, dieser Bileblog trifft es auf die Nase! :) Nochmals vielen Dank dafür.
javamonkey79
1
+1 für JAX-WS. Viele Tage mit Axis2 verloren ... eine totale MESS (ganz zu schweigen von einer
Menge
1
Hey Pascal, Glen Mazzas Link ist jetzt unterbrochen.
Adeel Ansari
8

Ich hatte gute Erfolge mit Spring WS für das Client-Ende einer Web-Service-App - siehe http://static.springsource.org/spring-ws/sites/1.5/reference/html/client.html

Mein Projekt verwendet eine Kombination aus:

  • XMLBeans (generiert aus einem einfachen Maven-Job mit dem xmlbeans-maven-Plugin)

  • Spring WS - Mit marshalSendAndReceive () wird der Code zum Senden und Empfangen auf eine Zeile reduziert

  • einige Dozer - Zuordnung der komplexen XMLBeans zu einfachen Beans für die Client-GUI

Steve
quelle