Różnica między JAX-WS, Axis2 i CXF

132

Jaka jest różnica pomiędzy:

  1. JAX-WS
  2. Oś 2
  3. CXF

Wszystkie trzy mogą służyć do tworzenia usług sieciowych w Javie.
Z tego co wiem, JAX-WS to specyfikacja, a Axis2 i CXF to implementacje, ale Java 1.6 ma implementację JAX-WS, jeśli się nie mylę.

Czy można więc używać Javy 1.6 do tworzenia usług sieciowych JAX-WS bez użycia Axis2 czy CXF? Jaki jest zatem pożytek z Axis2, CXF?

Maverick Riz
źródło

Odpowiedzi:

144

Implementacja JAX-WS wbudowana w JDK to tak naprawdę tylko podstawowe mydło. Jeśli potrzebujesz bardziej złożonych rzeczy WS- *, takich jak WS-Security, WS-RM, WS-Policy itp., Musisz użyć jednej z alternatyw, takich jak CXF lub Metro lub Axis2. Może również zależeć od tego, z czym próbujesz się zintegrować. Na przykład CXF ma najwyższej klasy obsługę Spring, a także bardzo dobrą obsługę OSGi.

Oprócz JAX-WS CXF ma również inne cechy. Posiada również zgodną implementację JAX-RS i bardzo dobrze obsługuje eksponowanie usług jako REST i SOAP. Ma implementację SOAP / JMS zgodną z W3C, jeśli tego typu rzeczy są wymagane. Zasadniczo wiele rzeczy nie jest dostępnych w impl. In-jdk JAX-WS.

Zobacz także:

Różnica między Apache CXF i Axis

Daniel Kulp
źródło
1
Dzięki, bardzo pomaga. Więc jeśli chodzi o podstawowe usługi sieciowe, mogę po prostu użyć java 1.6 do zaimplementowania.I czy ich implementacja jax-ws w java 1.5? Czy został dodany po 1.6? Jeśli potrzebuję dodatkowych funkcji, mogę wybrać CXF?
Maverick Riz
5
Został dodany w 1.6. Jeśli potrzebujesz wsparcia 1.5, musisz pobrać plik CXF lub plik Impl referencyjny JAX-WS lub podobny.
Daniel Kulp,
7
W większości przypadków, jeśli zaczniesz od implantu JAX-WS in-jdk, możesz w każdej chwili skorzystać z CXF i nadal będzie działać.
Daniel Kulp,
1
Mam małe wątpliwości. Czy to nie Metro - implementacja JAX-WS wbudowana w JDK? Czy Metro jest bardziej wyrafinowane niż implementacja JAX-WS wbudowana w JDK?
Dexter
16

W skrócie.

WSDL WS- * są niezależne od języka.

JAX-WS to standard Java do tworzenia usług internetowych.

Apache CXF i Apache Axis 2 to dwie implementacje JAX-WS. Oferują również implementacje JAX-RS, dzięki czemu można tworzyć usługi Restful.

CXF ma lepszą integrację ze Spring i Camel ( camel-cxf ). Wydaje się, że Axis 2 nie ma aktywnej wersji.

chenrui
źródło
15

Znalazłem z CXF - integracja ze Spring jest bardzo łatwa. Ponadto zapewnia różne funkcje, takie jak:

  1. Dostosowywanie funkcji rejestrowania
  2. Przechwytywacz ruchu przychodzącego i wychodzącego
  3. Bezpieczeństwo na poziomie aplikacji
  4. Łatwa obsługa wyjątków przy użyciu niestandardowego błędu.

Aby uzyskać więcej informacji, jeśli chcesz, sprawdź ten link:

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

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

I, czytam powyższe linki, jest to dla mnie pomocne. Mam nadzieję, że u ciebie też zadziała.

Dzięki !

puru
źródło
3

Organizacja usług internetowych stosuje pewne wytyczne, np. BP (Basic Profile) 1.0 i BP (Basic Profile) 1.1. W oparciu o wytyczne Specyfikacja wersji dla wszystkich języków (Java / .Net) z domyślną implementacją W java Podstawa na specyfikacji BP 1.0 to JAX-RPC, a specyfikacja 1.0 to JAX-WS

JAX-WS Domyślną implementacją jest RI (implementacja referencyjna) Na podstawie wymagania / wyboru możemy zmienić implementację (RI / AXIS-2 / CXF)

Kiedy używamy javy 1.6, to przypadek w JDK jest już dostępny, więc nie jest wymagany żaden inny jar. Jeśli chcesz użyć innej implementacji, ten przypadek wymagał konkretnego pliku implementacyjnego.

Axis-2 i CXF pochodzą z Apache

Abhijit Patra
źródło