Unterschied zwischen JAX-WS, Axis2 und CXF

131

Was ist der Unterschied zwischen:

  1. JAX-WS
  2. Achse2
  3. CXF

Alle drei können verwendet werden, um Webservices in Java zu erstellen.
Soweit ich weiß, ist JAX-WS eine Spezifikation und Axis2 und CXF sind Implementierungen, aber Java 1.6 hat die Implementierung von JAX-WS, wenn ich mich nicht irre.

Man kann also Java 1.6 verwenden, um JAX-WS-Webdienste ohne Axis2 oder CXF zu entwickeln? Was nützt dann Axis2, CXF?

Maverick Riz
quelle

Antworten:

143

Die im JDK integrierte JAX-WS-Implementierung ist wirklich nur das grundlegende Seifenmaterial. Wenn Sie komplexere WS- * Dinge wie WS-Sicherheit, WS-RM, WS-Richtlinie usw. benötigen, müssen Sie eine der Alternativen wie CXF oder Metro oder Axis2 verwenden. Dies kann auch davon abhängen, in was Sie sich integrieren möchten. Zum Beispiel bietet CXF erstklassige Federunterstützung sowie sehr gute OSGi-Unterstützung.

CXF hat neben JAX-WS noch andere Dinge. Es verfügt auch über eine kompatible JAX-RS-Implementierung und unterstützt die Bereitstellung von Diensten sowohl als REST als auch als SOAP sehr gut. Verfügt über eine W3C-kompatible SOAP / JMS-Implementierung, wenn diese Art von Dingen erforderlich ist. Grundsätzlich sind viele Dinge nicht im in-jdk JAX-WS impl verfügbar.

Siehe auch:

Unterschied zwischen Apache CXF und Axis

Daniel Kulp
quelle
1
Danke, hilft viel. Also für die grundlegenden Web-Service-Sachen kann ich nur Java 1.6 verwenden, um zu implementieren. Und war es eine Implementierung von Java-Ws in Java 1.5? Oder wurde es nach 1.6 hinzugefügt? Wenn ich zusätzliche Funktionen benötige, kann ich mit CXF gehen?
Maverick Riz
5
Es wurde in 1.6 hinzugefügt. Wenn Sie 1.5-Unterstützung benötigen, müssen Sie CXF oder das JAX-WS-Referenzimplement oder ähnliches verwenden.
Daniel Kulp
7
Und zum größten Teil, wenn Sie mit dem in-jdk JAX-WS-Impl beginnen, können Sie CXF jederzeit einbinden und es würde immer noch funktionieren.
Daniel Kulp
1
Ich habe ein wenig Zweifel. Ist nicht Metro - Die im JDK integrierte JAX-WS-Implementierung? Oder ist Metro ausgefeilter als die im JDK integrierte JAX-WS-Implementierung?
Dexter
16

Zusamenfassend.

WSDL WS- * sind sprachunabhängig.

JAX-WS sind Java-Standard zum Erstellen von Webdiensten.

Apache CXF und Apache Axis 2 sind zwei Implementierungen von JAX-WS. Sie bieten auch JAX-RS-Implementierungen an, mit denen Sie Restful-Services erstellen können.

CXF lässt sich besser in Spring und Camel ( camel-cxf ) integrieren. Und Achse 2 scheint keine aktive Version zu haben.

Chenrui
quelle
15

Ich fand mit CXF - die Integration mit Spring ist sehr einfach. Darüber hinaus bietet es verschiedene Funktionen wie:

  1. Anpassung der Protokollierungsfunktionen
  2. Eingehender und ausgehender Abfangjäger
  3. Sicherheit auf Anwendungsebene
  4. Einfache Ausnahmebehandlung mit benutzerdefiniertem Fehler.

Für weitere Informationen, wenn Sie möchten, überprüfen Sie bitte diesen Link:

http://predic8.com/axis2-cxf-jax-ws-comparison.htm

http://www.ibm.com/developerworks/java/library/j-jws11/

Und ich habe die obigen Links gelesen, es ist hilfreich für mich. Ich hoffe es funktioniert auch für dich.

Vielen Dank !

puru
quelle
3

Die Organisation des Webdienstes stützt sich auf einige Richtlinien, z. B. BP (Basisprofil) 1.0 und BP (Basisprofil) 1.1. Basierend auf den Richtlinien Alle Benutzer von Sprachen (Java / .Net) veröffentlichen die Spezifikation mit Standardimplementierung. In Java basiert die Spezifikation auf BP 1.0 auf JAX-RPC und die Spezifikation auf 1.0 auf JAX-WS

JAX-WS Standardimplementierung ist RI (Referenzimplementierung) Basierend auf der Anforderung / Auswahl können wir die Implementierung ändern (RI / AXIS-2 / CXF).

Wenn wir Java 1.6 verwenden, ist dieser Fall in JDK bereits verfügbar, sodass kein anderes JAR erforderlich ist. Wenn Sie eine andere Implementierung verwenden möchten, ist für diesen Fall ein bestimmtes Implementierungsglas erforderlich.

Axis-2 und CXF stammen von Apache

Abhijit Patra
quelle