zu Beantworten Sie Ihre Frage, wir müssen zuerst zwischen den Tools unterscheiden, die Sie aufgelistet haben.
JAX-WS, JAXB, JAXM, JAXR, JAX-RPC sind XML- und Webservice-bezogene APIs, während Axis 1 und 2 Implementierungen von null, einer oder mehreren dieser APIs sind, je nach Version.
JAX-B 1 und 2 sind XML-Objekte bindende APIs, JAX-WS ist eine WSDL- und SOAP-basierte Webservice-API und der Vorgänger von JAX-RPC, JAX-M ist eine ältere XML-Messaging-API und JAX-R ist eine Abstraktions-API für die Interaktion mit Registries wie UDDI und ebXML.
Vom Java.net JAX-RPC-Seite:
Die Expertengruppe JAX-RPC hat mit Sun Microsystems als Beispiel Blei breite Beteiligung der Industrie. Die erste Spezifikation (JAX-RPC 1.0) war JSR-101 und wurde im Juni 2002 veröffentlicht. Im Oktober 2003 folgte eine Wartungsversion, die eine bessere Integration mit JAXB 1.0 sowie eine bessere Unterstützung für doc/literal bot.
Die nächste Version der Spezifikation wurde von JAX-RPC 2.0 in JAX-WS 2.0 umbenannt und wird als JSR-224 entwickelt; Diese Version wird eine Reihe zusätzlicher Anforderungen in diesem Bereich abdecken und die Synergie zwischen den JAXB- und JAX-WS-Spezifikationen erhöhen. Sie können hier auf die JAX-WS-Projektseite zugreifen.
Da SOAP-Stacks einen langen Weg seit JAX-B 1.0 und JAX-RPC 1.0 Ich empfehle gekommen ist weit weg von Axis 1.0 und XFire bleiben (was, wenn ich mich recht erinnere nicht einmal implementieren JAX-RPC-1) . Es gibt zahlreiche SOAP-Stacks, die die neueren APIs (JAX-WS 2.x und JAX-B 2.x) implementieren.
Wie andere bereits erwähnt haben, sind Axis 2, JAX-WS RI und CXF alle gültige Optionen. Diese SOAP-Stacks sind wesentlich ausgereifter und unterstützen viele moderne WS-* Spezifikationen.
Ein Wort der Warnung über die Kommentare in Bezug auf die Verwendung Ihrer IDE zur automatischen Generierung von Client-Code. Während ich ein großer Befürworter der Generierung von XML-Datenbindungscode und JAX-WS-Schnittstellen von XSDs bzw. WSDLs bin, warne ich die Verwendung eines integrierten Assistenten in Ihrer IDE, um die automatische Generierung durchzuführen. Wenn Sie an einem Team mit mehr als einem Entwickler arbeiten oder beabsichtigen, den generierten Code zu ändern, sollten Sie die Wartbarkeit eines solchen Ansatzes in Betracht ziehen.
Wenn Sie mehr als einen Entwickler haben, wird es eine Zeit geben, wenn einer von ihnen eine andere Version des automatischen Generierungswerkzeugs, eine andere IDE oder eine andere Konfiguration in seinem Tool verwendet. Wenn Sie die automatische Generierung über einen Assistenten vornehmen, müssen sich die Entwickler darüber im Klaren sein, wie sie den Code generiert haben, wenn Sie ihn in Zukunft neu generieren müssen. Wenn Sie die XSD ändern und sich bei der letzten automatischen Generierung nicht an Ihre Konfiguration erinnern, stimmt der generierte Code möglicherweise nicht mit dem vorhandenen Code überein, der bereits in Ihrem gesamten Programm verwendet wird.
Wenn Sie vorhaben, den generierten Code zu ändern, stellen Sie sicher, dass Sie ihn nur einmal ausführen müssen und dass Sie den Code von nun an bequem pflegen oder den neu erstellten Code regelmäßig mit Ihren Änderungen zusammenführen können.
Diese beiden Probleme können vermieden werden, indem Sie die Codegenerierung in Ihrem Erstellungsprozess scripten. JAX-WS und JAX-B enthalten beide Ant-Aufgaben und/oder Maven 2-Plug-Ins, die in Ihren Builds einfach zu verwenden sind. Nehmen Sie diese Warnungen ernst, da ich gesehen habe, dass mehrere Projekte unter diesen Problemen gelitten haben, als sie Code ändern mussten, der vor 5 Jahren von einem Mitarbeiter erzeugt wurde, der das Unternehmen verlassen hatte.
Meine abschließenden Worte der Vorsicht sind vorsichtig, wenn Sie einem Tool erlauben, Ihre Web-Service-Schnittstellen automatisch aus Ihren WSDLs zu generieren. Das Tool JAX-WS RI WSDL2Java platziert gerne fest codierte Pfade in die WSDL in den generierten Schnittstellen.Meiner Meinung nach sollten Sie die Schnittstellen einmal automatisch generieren und dann die fest codierten URLs und QName-Verweise entfernen, damit die Schnittstelle für alle Webdienste, die die von der Schnittstelle repräsentierte WSDL-Bindung implementieren, und nicht nur für den einen Endpunkt, der Ihr ist WSDL beschreibt.
Darüber hinaus kommt Eclipse mit einem Assistenten "New Web Service Client", der den gesamten Prozess vereinfacht. Stellen Sie einfach die WSDL bereit und Sie müssen sich nicht einmal um AXIS kümmern. –
AXIS war früher einfach, aber jetzt kompliziert. Es gibt nun ungefähr 59 verschiedene Jar-Dateien, die von AXIS2 benötigt werden. Heiliger Rauch! Zeit, Pferde zu wechseln. – Cheeso