Qual é a diferença entre JAX-RS e JAX-WS?

93

Depois de ler alguns artigos sobre JAX-RS e JAX-WS, tenho algumas perguntas que gostaria de confirmar.

  1. O JAX-RS pode fazer solicitações assíncronas como o JAX-WS?
  2. O JAX-RS pode acessar um serviço da web que não está sendo executado na plataforma Java e vice-versa?
  3. O que significa "REST é particularmente útil para dispositivos de perfil limitado, como PDAs e telefones celulares"?
  4. O que significa "JAX-RS não requer mensagens XML ou definições de API de serviço WSDL?
pmark019
fonte

Respostas:

78

O JAX-RS pode fazer solicitações assíncronas como o JAX-WS?

1) Não sei se a API JAX-RS inclui um mecanismo específico para solicitações assíncronas, mas essa resposta ainda pode mudar com base na implementação do cliente que você usa.

O JAX-RS pode acessar um serviço da web que não está sendo executado na plataforma Java e vice-versa?

2) Não consigo pensar em nenhum motivo pelo qual não seria capaz.

O que significa "REST é particularmente útil para dispositivos de perfil limitado, como PDAs e telefones celulares"?

3) As arquiteturas baseadas em REST normalmente usarão um formato de dados leve, como JSON, para enviar e receber dados. Isso está em contraste com JAX-WS, que usa XML. Não vejo XML por si só tão significativamente mais pesado que JSON (o que algumas pessoas podem argumentar), mas com JAX-WS é a quantidade de XML usado que acaba tornando REST com JSON a opção mais leve.

O que significa "JAX-RS não requer mensagens XML ou definições de API de serviço WSDL?

4) Conforme declarado em 3, as arquiteturas REST geralmente usam JSON para enviar e receber dados. JAX-WS usa XML. Não é que JSON seja significativamente menor do que XML por si só. É principalmente porque a especificação JAX-WS inclui muita sobrecarga na forma como se comunica.

No que diz respeito às definições de WSDL e API, o REST usará com mais frequência a estrutura URI e os comandos HTTP para definir a API em vez dos tipos de mensagem, como é feito no JAX-WS. Isso significa que você não precisa publicar um documento WSDL para que outros usuários de seu serviço possam saber como se comunicar com ele. Com o REST, você ainda precisará fornecer alguma documentação para outros usuários sobre como o serviço REST é organizado e quais dados e comandos HTTP precisam ser enviados.

Nick Roth
fonte
Obrigado por essa resposta muito útil. Existem outras coisas que diferenciam o JAX-WS do JAX-RS que você conhece?
pmark019
92

Outro ponto importante

JAX-WS representa SOAP

JAX-RS representa REST

Como escolher entre a implementação de serviços da Web JAX-RS e JAX-WS?

user2849471
fonte
29
Na verdade, JAX-WS representa serviços da Web baseados em RESTful e SOAP. Uma maneira de pensar sobre isso é que JAX-RS é especializado em RESTful, enquanto JAX-WS permite mais flexibilidade para escolher entre os dois, ao mesmo tempo em que é (em alguns casos) mais complicado de configurar.
MattC
Obrigado por uma explicação simples.
PeerNet
2
" JAX-WS representa serviços da web baseados em RESTful e SOAP " - isso não é verdade, você pode colocar alguma referência para validar sua declaração, JAX-WS pode transportar SOAP sobre HTTP e também XML sobre HTTP, mas isso torna JAX-WS Repousante. Ser RESTful é um conceito totalmente diferente.
hagrawal
43

JAX-WS - é a API Java para Web Services baseados em XML - uma forma padrão de desenvolver Web Services em notação SOAP (Simple Object Access Protocol).

A chamada dos Web Services é realizada por meio de chamadas de procedimento remoto. Para a troca de informações entre o cliente e o Web Service é utilizado o protocolo SOAP. Troca de mensagens entre o cliente e o servidor realizada por meio de mensagens SOAP baseadas em XML .

Os clientes do JAX-WS Web-Service precisam de um arquivo WSDL para gerar o código executável que os clientes podem usar para chamar o Web-Service.

JAX-RS - API Java para Web Services RESTful. Os serviços da Web RESTful são representados como recursos e podem ser identificados por Uniform Resource Identifiers ( URI ). A chamada de procedimento remoto, neste caso, é representada como uma solicitação HTTP e os dados necessários são passados ​​como parâmetros da consulta. Web Services RESTful - mais flexível, pode usar vários tipos MIME diferentes . Normalmente usado para troca de dados XML ou troca de dados JSON (JavaScript Object Notation) ...


fonte
Explicação curta e nítida !! Excelente.
Saurabh Rai
0

Tenho trabalhado no Apachi Axis1.1 e Axis2.0 e JAX-WS, mas sugiro que você deve JAX-WS porque permite que você faça wsdl em qualquer formato, eu estava fazendo operação como GetInquiry () no Apache Axis2, não permita-me iniciar o nome da operação em maiúsculas, portanto, não é bom, então sugiro que você deve usar JAX-WS

Waseem Saeed
fonte
0

O JAX-RS pode fazer solicitações assíncronas como o JAX-WS?

Sim, certamente pode usar @Async

O JAX-RS pode acessar um serviço da web que não está sendo executado na plataforma Java e vice-versa?

Sim, pode fazer

O que significa "REST é particularmente útil para dispositivos de perfil limitado, como PDAs e telefones celulares"?

É usado principalmente para apis públicas, dependendo de qual abordagem você deseja usar.

O que significa "JAX-RS não requer mensagens XML ou definições de API de serviço WSDL?

Tem seus próprios padrões WADL (Web application Development Language) tem requisição http pelo qual você pode acessar recursos eles são totalmente criados por uma mentalidade diferente, Caso no Jax-Rs você tenha que pensar em expor recursos

Urvil Joshi
fonte