Suche
Javas Seifenoper muss man einfach lieben

Enterprise Java Web Services: SOAP Web Services mit JAX-WS

Bernhard Löwenstein

Die geschickte Kombination von POJOs und Annotationen hat in den letzten Jahren die Implementierung zahlreicher Java-Komponenten deutlich vereinfacht. Auch SOAP Web Services lassen sich mithilfe von JAX-WS auf diese Weise realisieren. Wie das genau geht, zeigt der folgende Artikel.

Enterprise Java Web Services

Die Serie „Enterprise Java Web Services“ von Bernhard Löwenstein ist erstmals im Java Magazin erschienen und umfasst vier Teile:

  • Teil 1: SOAP Web Services mit JAX-WS
  • Teil 2: RESTful Web Services mit JAX-RS
  • Teil 3: Frameworks zur Entwicklung von SOAP Web Services
  • Teil 4: Frameworks zur Entwicklung von RESTful Web Services

Erinnern Sie sich noch an CORBA? Um dort ein paar Objekte zwischen den verteilten Systemteilen hin und her wandern zu lassen, war ein ganz schöner Aufwand vonnöten, oder? Doch dann kamen sie und vieles wurde einfacher: Web Services. Zwar dauerte es ein wenig bis die anfänglichen Kinderkrankheiten ausgemerzt waren, mittlerweile sind Web Services aber als Brückentechnologie in der vor Heterogenität nur so strotzenden IT-Landschaft nicht mehr wegzudenken.

Im Rahmen dieser vierteiligen Artikelserie wollen wir uns deshalb mit der Entwicklung solcher Dienste in Java beschäftigen. Dank dem seit der fünften Java-Version eingeschlagenen Weg, in Verbindung mit Komponenten auf annotierte POJOs zu setzen, geht dies einfach und elegant vonstatten. Im ersten Teil steht die Implementierung von SOAP Web Services mit JAX-WS (Java API for XML-Based Web Services) im Mittelpunkt. Wie sich RESTful Web Services mit JAX-RS (Java API for RESTful Web Services) realisieren lassen, wird der zweite Artikel zeigen, während die letzen beiden Teile einen Überblick über verschiedene Web-Service-Frameworks geben, die bei der Entwicklung derartiger Dienste hilfreich sind.

SOAP Web Services

Charakteristisch für jeden SOAP Web Service ist, dass er die Funktionalitäten eines Dienstes kapselt. Der Methodenaufruf läuft nach dem RPC-Prinzip ab. Die Kommunikation zwischen dem aufgerufenen Service und seinem aufrufenden Client erfolgt mittels SOAP (früher: Simple Object Access Protocol). Dieses nutzt XML als Nachrichtenformat. Für den Transport solcher Nachrichten lassen sich verschiedene Protokolle verwenden. Üblicherweise gelangt HTTP(S) zum Einsatz. Eine SOAP-Nachricht besteht aus einem optionalen Header sowie dem Body mit dem eigentlichen Nachrichteninhalt. Ersterer kann zur Übertragung zusätzlicher Informationen, beispielsweise Authentifizierungsdaten, genutzt werden.

Die Beschreibung der Web-Service-Schnittstelle erfolgt mithilfe von WSDL (Web Services Description Language), einer ebenfalls auf XML basierenden Sprache. Die Schnittstellenbeschreibung dient als Vertrag zwischen dem Web Service und seinen Clients. Sie gibt im Großen und Ganzen Auskunft über die vom Service bereitgestellten Methoden und spezifiziert die zugehörigen Datenstrukturen.

JAX-WS

JAX-WS [1] ermöglicht dem Java-Programmierer die einfache Realisierung von SOAP Web Services auf Basis annotierter POJOs. Sie ist der Nachfolger von JAX-RPC (Java API for XML-based RPC) und Teil der Java-Plattformen SE 6 und EE 5. Die Spezifikation liegt aktuell in der Version 2.2 vor, die zugehörige Referenzimplementierung heißt Metro [2]. Beim Codieren bedient sich der Entwickler üblicherweise der Annotationen gleich mehrerer Java-Technologien (Tabelle 1).

Tabelle 1: Verschiedene Java-Technologien steuern Annotationen zur JAX-WS-Entwicklung bei

Technologie JSR Package
Common Annotations for the Java Platform 250 javax.annotation.*
Java API for XML-Based Web Services (JAX-WS) 2.0 224 javax.xml.ws.*
Java Architecture for XML Binding (JAXB) 2.0 222 javax.xml.bind.annotation.*
Web Services Metadata for the Java Platform 181 javax.jws.*
Geschrieben von
Bernhard Löwenstein
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.