Разница между JAX-WS, Axis2 и CXF

131

В чем разница между:

  1. JAX-WS
  2. Axis2
  3. CXF

Все три могут использоваться для создания веб-сервисов на Java.
Насколько я знаю, JAX-WS - это спецификация, а Axis2 и CXF - это реализации, но Java 1.6 имеет реализацию JAX-WS, если я не ошибаюсь.

Итак, можно ли использовать Java 1.6 для разработки веб-сервисов JAX-WS без использования Axis2 или CXF? Тогда в чем польза Axis2, CXF?

Маверик Риз
источник

Ответы:

143

Реализация JAX-WS, встроенная в JDK, на самом деле является всего лишь базовым мыльным материалом. Если вам нужны какие-либо более сложные вещи WS- *, такие как WS-Security, WS-RM, WS-Policy и т. Д., Вам необходимо использовать одну из альтернатив, например CXF, Metro или Axis2. Это также может зависеть от того, с чем вы пытаетесь интегрироваться. Например, CXF имеет первоклассную поддержку Spring, а также очень хорошую поддержку OSGi.

В CXF есть и другие вещи, помимо JAX-WS. Он также имеет совместимую реализацию JAX-RS и очень хорошо поддерживает предоставление сервисов как REST, так и SOAP. Имеет реализацию SOAP / JMS, совместимую с W3C, если требуется такой тип вещей. По сути, многие вещи, недоступные из in-jdk JAX-WS impl.

Также см:

Разница между Apache CXF и Axis

Даниэль Кулп
источник
1
Спасибо, очень помогает. Итак, для реализации основных веб-сервисов я могу просто использовать java 1.6. И была ли это реализация jax-ws в java 1.5? Или он был добавлен после 1.6? Если мне нужны дополнительные функции, я могу использовать CXF?
Maverick Riz
5
Он был добавлен в 1.6. Если вам нужна поддержка версии 1.5, вам нужно будет загрузить CXF или ссылку на JAX-WS или что-то подобное.
Daniel Kulp
7
И по большей части, если вы начнете с in-jdk JAX-WS impl, вы можете в любой момент использовать CXF, и он все равно будет работать.
Daniel Kulp
1
Я немного сомневаюсь. Разве Metro - реализация JAX-WS не встроена в JDK? Или Metro более сложна, чем реализация JAX-WS, встроенная в JDK?
Декстер
16

Коротко.

WSDL WS- * не зависят от языка.

JAX-WS - это стандарт Java для создания веб-сервисов.

Apache CXF и Apache Axis 2 - это две реализации JAX-WS. Они также предлагают реализации JAX-RS, чтобы вы могли создавать сервисы Restful.

CXF лучше интегрируется с Spring и Camel ( camel-cxf ). А у Axis 2 вроде нет активного релиза.

chenrui
источник
15

Я обнаружил, что с CXF - интеграция со Spring очень проста. Кроме того, он предоставляет различные функции, такие как:

  1. Настройка функций ведения журнала
  2. Входящий и исходящий перехватчик
  3. Безопасность на уровне приложений
  4. Простая обработка исключений с использованием настраиваемой ошибки.

Для получения более подробной информации, пожалуйста, перейдите по этой ссылке:

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

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

И, я прочитал ссылки выше, это полезно для меня. Надеюсь, это сработает и для вас.

Спасибо !

пуру
источник
3

Организация веб-службы издает некоторые рекомендации, например, BP (базовый профиль) 1.0 и BP (базовый профиль) 1.1. Основываясь на руководящих принципах, люди выпускают спецификацию на всех языках (Java / .Net) с реализацией по умолчанию В java Базой на спецификации BP 1.0 является JAX-RPC, а спецификация 1.0 - JAX-WS

JAX-WS Реализация по умолчанию - RI (эталонная реализация). На основании требований / выбора мы можем изменить реализацию (RI / AXIS-2 / CXF)

Когда мы используем java 1.6, этот случай в JDK уже доступен, поэтому никакой другой jar не требуется. Если вы хотите использовать другую реализацию, в этом случае требуется конкретный jar-файл реализации.

Axis-2 и CXF исходят от Apache

Абхиджит Патра
источник