Diferença entre JAX-WS, Axis2 e CXF

131

Qual é a diferença entre:

  1. JAX-WS
  2. Axis2
  3. CXF

Todos os três podem ser usados ​​para criar serviços da web em Java.
Pelo que sei, o JAX-WS é uma especificação e o Axis2 e o CXF são implementações, mas o Java 1.6 tem implementação do JAX-WS, se não estiver errado.

Então, pode-se usar o Java 1.6 para desenvolver serviços da Web JAX-WS sem usar o Axis2 ou o CXF? Então, qual é a utilidade do Axis2, CXF?

Maverick Riz
fonte

Respostas:

143

A implementação JAX-WS incorporada ao JDK realmente é apenas o material básico de sabão. Se você precisar de alguma das coisas mais complexas do WS- *, como WS-Security, WS-RM, WS-Policy, etc ..., precisará usar uma das alternativas, como CXF, Metro ou Axis2. Também pode depender do que você está tentando integrar. Por exemplo, o CXF possui suporte de primavera de alto nível, além de um suporte OSGi muito bom.

O CXF também tem outras coisas além do JAX-WS. Também possui uma implementação JAX-RS compatível e suporta a exposição de serviços como REST e SOAP muito bem. Possui uma implementação SOAP / JMS compatível com W3C, se esse tipo de coisa for necessária. Basicamente, muitas coisas não estão disponíveis no implemento JAX-WS in-jdk.

Veja também:

Diferença entre Apache CXF e Axis

Daniel Kulp
fonte
1
Obrigado, ajuda muito. Então, para o serviço básico da Web, eu posso usar o java 1.6 para implementar. E foi uma implementação do jax-ws no java 1.5? Ou foi adicionado após 1,6? Se eu precisar de recursos adicionais, posso usar o CXF?
Maverick Riz
5
Foi adicionado em 1.6. Se você precisar do suporte para 1.5, precisará pegar o CXF ou o implemento de referência JAX-WS ou similar.
21412 Daniel Kulp
7
E, na maioria das vezes, se você começar com o implemento JAX-WS in-jdk, poderá inserir o CXF a qualquer momento e ele ainda funcionará.
21412 Daniel Kulp
1
Eu tenho um pouco de dúvida. O Metro - a implementação JAX-WS não está embutida no JDK? Ou o Metro é mais sofisticado do que a implementação JAX-WS incorporada ao JDK?
Dexter
16

Em resumo.

WSDL WS- * são independentes de idioma.

JAX-WS são padrão Java para construir serviço da web.

O Apache CXF e o Apache Axis 2 são duas implementações do JAX-WS. Eles também oferecem implementações JAX-RS para que você possa construir serviços Restful.

O CXF possui uma melhor integração com o Spring e o Camel ( camel-cxf ). E o Eixo 2 parece não ter uma versão ativa.

chenrui
fonte
15

Eu descobri com o CXF - a integração com o Spring é muito fácil. Além disso, fornece vários recursos, como:

  1. Personalização de recursos de Log
  2. Interceptador de entrada e saída
  3. Segurança no nível do aplicativo
  4. Manuseio fácil de exceções usando falha personalizada.

Para mais detalhes, se você quiser, confira este link:

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

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

E, li os links acima, é muito útil para mim. Espero que funcione para você também.

Obrigado !

puru
fonte
3

A organização de serviços da Web apresenta algumas diretrizes, como BP (perfil básico) 1.0 e BP (perfil básico) 1.1. Baseia-se nas diretrizes Todas as pessoas em linguagem (Java / .Net) liberam Especificação com implementação padrão Em java A base na BP 1.0 é JAX-RPC e 1.0 é JAX-WS

A implementação padrão do JAX-WS é RI (Implementação de referência). Com base no requisito / escolha, podemos alterar a implementação (RI / AXIS-2 / CXF)

Quando estamos usando o java 1.6, esse caso no JDK já está disponível, portanto não é necessário nenhum outro jar. Se você deseja usar uma implementação diferente, esse caso exigiu um jar de implementação específico.

Axis-2 e CXF vêm do Apache

Abhijit Patra
fonte