Enterprise Java Web Services: SOAP Web Services mit JAX-WS
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).
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.* |
Hinterlasse einen Kommentar