Was ist der Unterschied zwischen JAX-RS und JAX-WS?

93

Nachdem ich einige Artikel über JAX-RS und JAX-WS gelesen hatte, hatte ich einige Fragen, die ich bestätigen möchte.

  1. Kann JAX-RS asynchrone Anforderungen wie JAX-WS ausführen?
  2. Kann JAX-RS auf einen Webdienst zugreifen, der nicht auf der Java-Plattform ausgeführt wird, und umgekehrt?
  3. Was bedeutet "REST ist besonders nützlich für Geräte mit eingeschränktem Profil wie PDAs und Mobiltelefone"?
  4. Was bedeutet "JAX-RS erfordert keine XML-Nachrichten oder WSDL-Service-API-Definitionen?"
pmark019
quelle

Antworten:

78

Kann JAX-RS asynchrone Anforderungen wie JAX-WS ausführen?

1) Ich weiß nicht, ob die JAX-RS-API einen bestimmten Mechanismus für asynchrone Anforderungen enthält, aber diese Antwort kann sich je nach verwendeter Client-Implementierung ändern.

Kann JAX-RS auf einen Webdienst zugreifen, der nicht auf der Java-Plattform ausgeführt wird, und umgekehrt?

2) Ich kann mir keinen Grund vorstellen, warum es nicht möglich wäre.

Was bedeutet "REST ist besonders nützlich für Geräte mit eingeschränktem Profil wie PDAs und Mobiltelefone"?

3) REST-basierte Architekturen verwenden normalerweise ein leichtes Datenformat wie JSON, um Daten hin und her zu senden. Dies steht im Gegensatz zu JAX-WS, das XML verwendet. Ich sehe XML an sich nicht so bedeutend schwerer als JSON (was einige Leute vielleicht argumentieren), aber mit JAX-WS ist es, wie viel XML verwendet wird, was REST mit JSON zur leichteren Option macht.

Was bedeutet "JAX-RS erfordert keine XML-Nachrichten oder WSDL-Service-API-Definitionen?"

4) Wie in 3 angegeben, verwenden REST-Architekturen häufig JSON zum Senden und Empfangen von Daten. JAX-WS verwendet XML. Es ist nicht so, dass JSON so bedeutend kleiner als XML ist. Es ist meistens so, dass die JAX-WS-Spezifikation viel Aufwand bei der Kommunikation beinhaltet.

In Bezug auf WSDL- und API-Definitionen verwendet REST häufiger die URI-Struktur und die HTTP-Befehle, um die API zu definieren, als Nachrichtentypen, wie dies im JAX-WS der Fall ist. Dies bedeutet, dass Sie kein WSDL-Dokument veröffentlichen müssen, damit andere Benutzer Ihres Dienstes wissen, wie sie mit Ihrem Dienst kommunizieren können. Mit REST müssen Sie anderen Benutzern noch einige Dokumentationen darüber bereitstellen, wie der REST-Service organisiert ist und welche Daten und HTTP-Befehle gesendet werden müssen.

Nick Roth
quelle
Vielen Dank für diese sehr hilfreiche Antwort. Gibt es andere Dinge, die JAX-WS von JAX-RS unterscheiden würden, von denen Sie wissen?
pmark019
92

Ein weiterer wichtiger Punkt

JAX-WS steht für SOAP

JAX-RS steht für REST

Wie kann man zwischen der Implementierung von JAX-RS- und JAX-WS-Webdiensten wählen?

user2849471
quelle
29
Tatsächlich repräsentiert JAX-WS sowohl RESTful- als auch SOAP-basierte Webdienste. Eine Möglichkeit, darüber nachzudenken, besteht darin, dass JAX-RS auf RESTful spezialisiert ist, während JAX-WS Ihnen mehr Flexibilität bei der Auswahl bietet, während die Konfiguration (in einigen Fällen) komplizierter ist.
MattC
Vielen Dank für die einfache Erklärung.
PeerNet
2
" JAX-WS repräsentiert sowohl RESTful- als auch SOAP-basierte Webdienste " - dies ist nicht wahr. Können Sie bitte einen Verweis angeben, um Ihre Behauptung zu bestätigen? JAX-WS kann SOAP über HTTP und auch XML über HTTP transportieren, aber dies macht JAX-WS RUHIG. RESTful zu sein ist ein ganz anderes Konzept.
Hagrawal
43

JAX-WS - ist die Java-API für die XML-basierten Webdienste - eine Standardmethode zum Entwickeln von Webdiensten in SOAP- Notation (Simple Object Access Protocol).

Das Aufrufen der Webdienste erfolgt über Remoteprozeduraufrufe. Für den Informationsaustausch zwischen dem Client und dem Webdienst wird das SOAP-Protokoll verwendet. Der Nachrichtenaustausch zwischen dem Client und dem Server erfolgt über XML- basierte SOAP-Nachrichten.

Clients des JAX-WS-Webdienstes benötigen eine WSDL- Datei, um ausführbaren Code zu generieren, mit dem die Clients den Webdienst aufrufen können.

JAX-RS - Java-API für RESTful Web Services. RESTful Web Services werden als Ressourcen dargestellt und können durch URI (Uniform Resource Identifiers ) identifiziert werden . Der Remoteprozeduraufruf wird in diesem Fall als HTTP- Anforderung dargestellt und die erforderlichen Daten werden als Parameter der Abfrage übergeben. Web Services RESTful - flexibler, kann mehrere verschiedene MIME- Typen verwenden. Wird normalerweise für den XML-Datenaustausch oder den JSON- Datenaustausch (JavaScript Object Notation) verwendet ...


quelle
Kurze und klare Erklärung !! Ausgezeichnet.
Saurabh Rai
0

Ich habe an Apachi Axis1.1 und Axis2.0 und JAX-WS gearbeitet, aber ich würde vorschlagen, dass Sie JAX-WS müssen, da es Ihnen erlaubt, WSDL in jedem Format zu erstellen. Ich habe eine Operation als GetInquiry () in Apache Axis2 ausgeführt, die dies nicht tat Erlauben Sie mir, den Operationsnamen in Großbuchstaben zu starten, daher finde ich ihn nicht gut. Daher würde ich vorschlagen, dass Sie JAX-WS verwenden müssen

Waseem Saeed
quelle
0

Kann JAX-RS asynchrone Anforderungen wie JAX-WS ausführen?

Ja, es kann sicherlich @Async verwenden

Kann JAX-RS auf einen Webdienst zugreifen, der nicht auf der Java-Plattform ausgeführt wird, und umgekehrt?

Ja, das kann es

Was bedeutet "REST ist besonders nützlich für Geräte mit eingeschränktem Profil wie PDAs und Mobiltelefone"?

Es wird hauptsächlich für öffentliche APIs verwendet. Es hängt davon ab, welchen Ansatz Sie verwenden möchten.

Was bedeutet "JAX-RS erfordert keine XML-Nachrichten oder WSDL-Service-API-Definitionen?"

Es hat seine eigenen Standards WADL (Web Application Development Language), es hat eine http-Anfrage, mit der Sie auf Ressourcen zugreifen können, die insgesamt von einer anderen Denkweise erstellt wurden. Falls Sie in Jax-Rs daran denken müssen, Ressourcen verfügbar zu machen

Urvil Joshi
quelle