Jakarta XML Web Services

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Java API for XML Web Services)
Zur Navigation springen Zur Suche springen
Jakarta XML Web Services
Basisdaten

Entwickler Eclipse Foundation
Aktuelle Version 4.0.0[1]
(3. Mai 2022)
Betriebssystem Cross-platform
Programmiersprache Java
Kategorie Application framework
Lizenz Eclipse Public License 2.0, GPL linking exception
projects.eclipse.org/projects/ee4j.jaxws

Die Jakarta XML Web Services (JAX-WS; früher Java API for XML Web Services) ist eine Jakarta EE-API zum Erstellen von Webservices. JAX-WS wurde in der Java Platform Enterprise Edition 5 eingeführt und ist ab der Version 1.6 auch Teil der Jakarta EE.[2]

JAX-WS baut auf JAX-RPC auf, ist Teil von Web Services Interoperability Technology und somit auch Teil des Project Metro. Wie andere Jakarta-EE-APIs benutzt auch JAX-WS Annotationen, um die Entwicklung und das Deployment von Webservice-Clients und Service-Endpunkten zu vereinfachen.

Funktionsweise von JAX-WS[Bearbeiten | Quelltext bearbeiten]

Client und Endpunkt kommunizieren über SOAP-Nachrichten. JAX-WS benutzt SAAJ, um SOAP-Nachrichten zu erzeugen. JAX-WS ist protokoll- und transportunabhängig. Standardmäßig wird allerdings SOAP 1.1 und HTTP verwendet.

Um die Daten richtig verarbeiten zu können, müssen die XML-Datentypen in Java-konforme Datentypen umgewandelt werden. Das wird von JAX-WS an JAXB (Jakarta XML Binding) delegiert. So kann die XML-Verarbeitung im Wesentlichen dem Programmierer verborgen bleiben.

Erstellen von Webservice-Endpunkten und -Clients[Bearbeiten | Quelltext bearbeiten]

Serverseite[Bearbeiten | Quelltext bearbeiten]

Es gibt zwei verschiedene Wege, Service-Endpunkte aufzubauen: Code First (Bottom Up) über POJOs und Contract First (Top Down) über WSDL.

Start mit POJOs (Bottom Up)[Bearbeiten | Quelltext bearbeiten]

Im Gegensatz zur vorhergehenden Entwicklungsweise (JAX-RPC), bei der zum Erstellen eines Webservice-Endpunktes eine Schnittstelle definiert und eine Klasse geschrieben wird, welche die Schnittstelle implementiert, können bei JAX-WS einfach nur POJOs, die bereits in einer Anwendung vorliegen, verwendet werden. Um dies zu ermöglichen, werden diese durch Java-Annotations zu einem Webservice erweitert. Auch die Deployment-Deskriptoren werden durch die Annotations überflüssig.

Start mit WSDL (Top Down)[Bearbeiten | Quelltext bearbeiten]

Klassen werden aus der WSDL-Beschreibung des Serviceinterfaces generiert und vom Nutzer ergänzt.

Clientseite[Bearbeiten | Quelltext bearbeiten]

Auf der Clientseite muss ein lokales Proxy-Objekt erzeugt werden, welches ebenfalls die Schnittstelle des Webservices implementiert (generiert aus WSDL). Bei JAX-WS holt sich der Client seinen Proxy nicht aus einer Factory. Er konstruiert ein ServiceObjekt mit dem new-Operator, ruft die getServicePort-Methode auf, um ein Proxy zu bekommen, und führt seine Methodenaufrufe auf dem Proxy-Objekt aus, als wäre der Webservice lokal verfügbar. Die JAX-WS-Laufzeitumgebung schickt die Aufrufe von dem Proxy-Objekt an den Webservice weiter, welcher dann die Operationen durchführt und das Ergebnis an den Client zurückschickt.

Unterstützte WS-*-Standards[Bearbeiten | Quelltext bearbeiten]

Die folgenden WS-*-Standards sind in der Referenzimplementierung von JAX-WS umgesetzt:[3][4]

Zurzeit wird nur WSDL 1.1 unterstützt, nicht WSDL 2.0.

Implementierungen[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Release 4.0.0. 3. Mai 2022 (abgerufen am 24. Oktober 2022).
  2. Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1
  3. http://wiki.apache.org/ws/StackComparison
  4. 1.4. Metro Specifications