Java für Fortgeschrittene Proseminar im Sommersemester 2009 Web Services Julija Got Technische Universität München 25.05.2009 Zusammenfassung In dieser Arbeit wird auf die technische Implementierung in Java und die Bestandteile von Web Services eingegangen. Dabei werden zuerst Grundbegriffe Web Services und serviceorientierte Architekturen behandelt und im weiteren werden einzelne Komponenten der Web Services und JAX-WS dargestellt. 1 Einleitung Heute ist die Fähigkeit Information zwischen Abteilungen, Kunden und Partnern problemlos auszutauschen, lebenswichtig für den Erfolg für ein Unternehmen. Viele Organisationen verwenden eine Vielfalt von unterschiedlichen Anwendungen, die Daten ganz unterschiedlich speichern und austauschen, und können deshalb nicht miteinander effektiv kommunizieren. Dadurch, dass unterschiedliche Anwendungen nicht immer die Informationen austauschen und aufeinander zugreifen können, entstand der Bedarf, eine Schnittstelle zwischen den verschiedenen Anwendugen zu entwickeln, die gleichzeitig Plattform- und Programmiersprachenunabhängig ist. Diese Rolle haben Web Services, die nach der SOA-Philosophie entwickelt wurden, übernommen. Web Services sind interoperabel und geben Programmen, die über Netz verbunden sind, eine Möglichkeit zu kommunizieren. Auch im Alltag können wir uns unsere Welt nicht mehr ohne Web Services vorstellen. Dienste, um Ticketpreise für Flüge bei unterschiedlichen Airlines, Hotels oder gar Pauschalreisen auf derselben Webseite zu vergleichen und zu buchen, Nachrichten von verschiedenen Agenturen auf einer Seite zu lesen, Transaktionen in Banken und vieles mehr lassen die Illusion entstehen, dass wir nur auf einen Server zugreifen, obwohl sich dahinter ganze Netze verbergen. Wie solche Netze entstehen und wie man sie mit Hilfe von JAX-WS verbindet, wird im Weiteren vorgestellt. 1 2 Web Services und SOA Im Unterkapitel Web Services“ wird auf die Begrifsdefinition von Web Services ” eingangen. Anschließend in Service Oriented Architecture“ wird der Grundge” danke, auf dem Web Services basieren, dargelegt. 2.1 Web Services Ein Web Service ist ein Stück der Geschäftslogik, das irgendwo“ im Internet ” liegt und durch standardisierte Internetprotokolle wie HTTP oder SMTP erreichbar ist. In Anbetracht dieser Definition könnte man mehrere Technologien der Vergangenheit als Web Service-Technologien klassifizieren, wie etwa die Win32 Plattform, J2EE, CORBA und CGI Script. Der Hauptunterschied zwischen diesen Technologien und der neuen Generation der Web Services ist ihre Standardisierung und die Anerkennung der Technik von den meisten bedeutenden ITUnternehmen. Deshalb werden Web Services mit folgenden 6 Punkten definiert: • Web Services sind Bestandteile von Anwendungen • Web Services kommunizieren durch offene Protokolle (HTTP, FTP, JMS, usw.) • Web Services sind selbständig und selbstbeschreibend • Web Services können in UDDI (siehe 3.4) registriert und später wiedergefunden werden • Web Services können durch Anwendungen benutzt werden • XML ist die Basis für Web Services (WSDL, XSD, SOAP) Web Services ermöglichen eine verteilte Umgebung, in der Anwendungen unabhängig von der Programmiersprache und Plattform untereinander kommunizieren können. Web Services fördern eine Umgebung für Systeme, die lose verbunden sind, und ermöglichen deren Zusammenwirken. 2.2 Service Oriented Architecture Viele der Ideen für Web Services basieren auf Konzepten der sogenannten Service-Oriented Architecture (SOA). Eine SOA-Infrastruktur erlaubt verschiedenen Anwendungen, Daten miteinander in einer heterogenen Landschaft auszutauschen. Service-Orientierung zielt auf eine lose Kopplung von Services mit Betriebssystemen, Programmiersprachen und anderen Technologien; sie trennt Funktionen in verschiedene Einheiten, oder Services, die Entwickler über ein Netz zugänglich machen, damit die Benutzer sie kombinieren und in fertigen Anwendungen wiederverwenden können. Abbildung 1 verdeutlicht den Unterschied zwischen Client/Server- Architektur, wo Kommunikation nur zwischen PC und Server möglich ist und SOA, die Informationsübermittlung zwischen unterschiedlichen Servern unterstützt. 2 Abbildung 1: Client/Server Architektur und SOA - Infrastruktur 3 Wie arbeiten Web Services? Elemente der Web-Service-Plattform sind: • SOAP (Simple Object Access Protocol) • UDDI (Universal Description, Discovery and Integration) • WSDL (Web Services Description Language) • XML (Extensible Markup Language) • HTTP (Hypertext Transfer Protokol) 3.1 3.1.1 Internet Standards XML XML bezeichnet eine universelle Beschreibungssprache, die ein Standard zur Erzeugung menschen- und maschinenlesbarer Dokumente beinhaltet. In der Kombination mit anderen Standards macht XML es möglich, den Inhalt eines Dokumentes getrennt von seiner Formatierung zu definieren und diesen Inhalt in anderen Anwendungen wiederzuverwenden. Dadurch wird XML als eine plattform- und programmiersprachenunabhängige Sprache definiert, die komplexe Nachrichten und Funktionen ausdrücken kann. XML ist Hauptbestandteil von WSDL, XSD und SOAP und ist ein Standard des W3C (World Wide Web Consortium)[8]. 3 Abbildung 2: SOAP-Zusammenarbeit 3.1.2 HTTP Protokoll Das HTTP-Protokoll ist das am meisten verwendete Internetprotokoll, das zur Datenübertragung benutzt wird (vgl. Abb. 2 und 3). Die Kommunkation erfolgt über TCP/IP (Transmission Control Protocol/Internet Protocol). Ein solcher Vorgang könnte zum Beispiel wie folgt ablaufen: Abbildung 3: Kommunikation zwischen Service und Client Der HTTP-Client verbindet sich mit dem HTTP-Server mit Hilfe von TCP. Nach dem Herstellen der Verbindung sendet der Client eine HTTPAnforderungsnachricht zum Server: 4 POST /item HTTP/1.1 Host: 189.123.345.239 Content-Type: text/plain Content-Length: 200 Der Server antwortet (bei erfolgreicher Verbindung) mit: POST /item HTTP/1.1 Host: 189.123.345.239 Content-Type: text/plain Content-Length: 200 <informationen kommen hier> Web Services können faktisch jedes Übertragungsprotokoll benutzen, aber es wird üblicherweise HTTP zur Datenübertragung verwendet. 3.2 Web Service Description Language (WSDL) WSDL ist eine XML-Technologie nach einem Standard des W3C, die das Interface eines Web Services auf eine standardisierte Weise beschreibt und in Form eines XML-Dokumentes angibt, wie bei einem Webdienst die Input- und OutputParameter eines Aufrufes aussehen müssen. Außerdem lokalisiert WSDL den Web Service, indem es Zugriffsdaten enthält. WSDL ist notwendig für die Verbindung mit dem Service und erlaubt Clients automatisiert zu verstehen, wie man mit einem Web Service interagieren kann. 3.2.1 Struktur von WSDL-Dokumenten Bei der Beschreibung von Web Services benutzt WSDL folgende Elemente: types - definiert Datentypen, die vom Web Service benutzt wurden message - definiert die Datenelemente einer Operation. Jede Nachricht kann aus einem oder mehreren Teilen bestehen. Die Teile können mit den Parametern eines Funktionsaufrufs einer traditionellen Programmiersprache verglichen werden. portType - beschreibt Web Service Operationen, die ausgeführt werden können und Nachrichten, die zu den Operationen gehören. binding - bestimmt das konkrete Protokoll und Datenformat für die Arbeitsschritte und Nachrichten, die durch einen bestimmten Port-Typ gegeben sind. service - fasst eine Menge von Ports zusammen. 5 <definitions targetNamespace="http://hello/" name="HelloService"> <types> <xsd:schema> <xsd:import namespace="http://hello/" schemaLocation="http://localhost:8080/ Hello/HelloService?xsd=1"/> </xsd:schema> </types> <message name="sayHallo"> <part name="parameters" element="tns:sayHallo"/> </message> <message name="sayHalloResponse"> <part name="parameters" element="tns:sayHalloResponse"/> </message> <portType name="Hello"> <operation name="sayHallo"> <input message="tns:sayHallo"/> <output message="tns:sayHalloResponse"/> </operation> </portType> <binding name="HelloPortBinding" type="tns:Hello"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sayHallo"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="HelloService"> <port name="HelloPort" binding="tns:HelloPortBinding"> <soap:address location="http://localhost:8080/Hello/HelloService"/> </port> </service> </definitions> Beispiel: HelloService.wsdl 6 Im oben angegebenen Beispiel wird ein WSDL-File von Hallo-Service (siehe Kapitel 4.1) dargestellt, das die nötigen Informationen über Inhalte von späteren SOAP-Nachrichten enthält. Im types - Element werden unter schemaLocati” on=“ virtuelle XSD-Typen definiert und importiert. XML-Schema beschreibt in einer komplexen Schemasprache Datentypen, einzelne XML-Schema-Instanzen (Dokumente) und Gruppen solcher Instanzen. Ein konkretes XML-Schema wird auch als eine XSD (XML-Schema-Definition) bezeichnet. In diesem Beispiel werden die Typen von http://localhost:8080/Hello/HelloService?xsd=1“ hin” zugefügt. Folgender Beispiel veranschaulicht die aus einer externen Datei importierte XSD-Datei. <xs:schema version="1.0" targetNamespace="http://hello/"> <xs:element name="sayHallo" type="tns:sayHallo"/> <xs:element name="sayHalloResponse" type="tns:sayHalloResponse"/> <xs:complexType name="sayHallo"> <xs:sequence> <xs:element name="arg0" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="sayHalloResponse"> <xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema> Beispiel: HelloService.xsd Bei JAX-WS werden Java-Typen auf XSD-Typen abgebildet. Das message-Element führt die XSD-Typen sayHallo“ und sayHalloRe” ” sponce“ an, die in portType als Eingangsnachrichtentyp ( sayHal” lo“) und Ausgangsnachrichtentyp (sayHalloResponse) festgelegt werden. Wie SOAP-Nachrichten definiert sind, ist in binding unter transport=“http://schemas.xmlsoap.org/soap/http“ angegeben. Außerdem beschreibt binding welche Voraussetzungen der Client beim Anbinden an den Port des Web Services erfüllen muss. In diesem Beispiel wird als Kommunikationsmittel SOAP-Nachrichten gewählt und als Transportprotokoll HTTP, wobei das Datenformat als dokument“ (style= dokument“ ) bestimmt ” ” wird. Auf welche Art und Weise auf den Service zugegriffen wird, ist in service beschrieben. In diesem Beispiel wird es durch http::8080 HelloService“ ” ermöglicht. 7 3.3 Simple Object Access Protocol (SOAP) Das Simple Object Access Protocol ist ein Kommunikationsprotokoll, um auf Web Services zuzugreifen. SOAP ist ein XML-basiertes Protokoll, das Kommunikationsformat zwischen Service und Client bestimmt. SOAP stellt eine Verpackungsstruktur bereit, um XML Dokumente über eine Vielfalt von Internettechnologien, einschließlich SMTP, HTTP, und FTP zu transportieren. Es stellt eine Struktur zur Verfügung, um RPC (Remote Procedure Call) auszuführen und hat einen standardisierten Transportmechanismus, wodurch heterogene Clients und Server miteinander arbeiten können: .NET Clients können auf EJBs (Enterprise Java Beans) und Java Clients auf .NET- Komponenten durch SOAP zugreifen. Eine SOAP-Nachricht besteht aus vier Hauptteilen: Envelope, Header, Body und Fault, die im folgenden Beispiel veranschaulicht sind. Die gezeigte SOAPNachricht wurde basierend auf dem WSDL-File automatisch gebildet. SOAP Request <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:sayHallo xmlns:ns2="http://hello/"> <arg0>Mr. Mustermann</arg0> </ns2:sayHallo> </S:Body> </S:Envelope> SOAP Response <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:sayHalloResponse xmlns:ns2="http://hello/"> <return>Hello, Mr. Mustermann</return> </ns2:sayHalloResponse> </S:Body> </S:Envelope> Beispiel: SOAP Anfrage und Antwort Ein Envelope-Element identifiziert das XML Dokument als eine SOAPNachricht und enthält eine Referenz auf den Standard(bspw. W3C) von SOAP. 8 Ein Header-Element ist optional und kann Meta-Informationen, beispielsweise zum Routing, zur Verschlüsselung oder zur Transaktionsidentifizierung beinhalten. Ein Body-Element enthält Aufruf- oder Antwortinformation. In eingeführtem Beispiel (Abb. 6) wird der Text Julija“ in der Request-Nachricht übergeben ” und nach der Bearbeitung von dieser Information enthält die SOAP-Antwort die zurückgelieferte Information Hello, Julija“. ” Ein Fault-Element ist optional und enthält die Information, wie die Nachricht aussehen wird, falls ein Fehler auftritt bzw. die Fehler- und Zustandsinformationen. Hier die wichtigsten Syntax-Regeln, die es einzuhalten gilt: • Eine SOAP-Nachricht muss korrektes XML darstellen. • Eine SOAP-Nachricht muss den SOAP Envelope namespace verwenden. • Eine SOAP-Nachricht darf keinen Verweis auf eine DTD (Document Type Definition) enthalten. • Eine SOAP-Nachricht darf keine XML-Bearbeitungsanweisungen enthalten. 3.4 UDDI UDDI ist ein platformunabhängiges Gerüst für die Beschreibung von Services und die Integration von Business Services übers Internet. UDDI ist ein Verzeichnis von Informationen über Web Services und ist mit einem Telefonbuch vergleichbar, bei dem an Stelle der Telefonnummer ein Verweis auf die WSDLBeschreibung steht. Weil es in vielen Szenarien nicht benötigt wird, Sicherheit nicht vollständig gewährleistet ist (keiner trägt die Verantwortung für Richtigkeit und Vollständigkeit der Information) und es einige andere Nachteile gibt, spielt es in der Praxis keine große Rolle. 3.5 Zusammenarbeit von SOAP, WSDL und UDDI In Web Services gibt es zwei grundsätzliche Akteure: Application und Service bzw. Client und Server zwischen denen die Kommunikation entstehen soll. Web Services erlauben Clients die Prozeduren und Funktionen an entfernten Objekten durch Benutzung eines XML-basierten Protokolls aufzurufen. Um diese Vorgänge besser zu verstehen, wird dies an Hand nachfolgender Abbildung erklärt. Abbildung 4 stellt folgenden Vorgang dar: Der Client stellt eine Anfrage an ein UDDI Verzeichnis für den Service (entweder namentlich, nach Kategorie oder nach Bezeichner). Der Client erhält die Information über die Position eines WSDL-Dokumentes aus dem UDDI-Verzeichnis. Das WSDL-Dokument enthält Information darüber, wie man sich mit dem Web Service in Verbindung setzt und das Format von Anfrage-Nachrichten im XML Schema. Der Client erzeugt eine 9 Abbildung 4: Einfache Interaktion von Web Services SOAP-Nachricht in Übereinstimmung mit dem XML Schema, das im WSDL steht und sendet eine Anfrage an den Host (auf dem der Dienst bereitgestellt wird). Abbildung 5: Größeres System von Web Services Das Beispiel in Abb. 5 stellt ein größeres System von Web Services dar. In diesem Fall ist der Server gleichzeitig auch Client eines anderen Services. 4 JAX-WS JAX-WS steht für Java API für XML Web Services und ist ein Nachfolger von JAX-RPC 1.1. JAX-WS ist eine Technologie, um Web Services und Clients, die durch Austausch von Nachrichten im XML-Format kommunizieren, zu erstellen. JAX-WS erlaubt dem Entwickler Web Services Nachrichten-orientiert oder RPC (Remote Procedure Call)-orientiert zu schreiben. Diese beiden Varianten unterscheiden sich zunächst einmal auf einer rein technischen Ebene, d.h. sie 10 bestimmen, wie genau die Informationen zwischen den Kommunikationspartner ausgetauscht werden. SOAP wurde ursprünglich hauptsächlich als plattformunabhängiger Standard für RPC verwendet. In serviceorientierten Architekturen liegt der Fokus aber auf dem nachrichtenorientierten Verarbeitungsmodell. Dieses wird von SOAP ebenso wie RPC unterstützt. Es werden nicht einzelne Methoden nacheinander aufgerufen, sondern ein ganzes Dokument übertragen, das den Geschäftsvorfall repräsentiert. Das führt zu einer viel loseren Kopplung zwischen den Anwendungen. Dagegen bei RPC werden viele kleine Nachrichten übertragen, was viel mehr Aufwand für das System mit sich bringt. Im weiteren wird darauf eingegangen, wie man einen einfachen Web Service in Java 6 entwickeln kann. Um ein anschauliches Beispiel zu geben, werden wir einen Web Service und einen Web Client erstellen. Es existieren zwei Methoden Web Services zu entwickeln: Top-down Methode zum Erzeugen eines Web Services aus einem schon existierenden WSDL File. Bottom-up Methode, die schon auf einem existierenden Java Bean basiert, um daraus einen Web Service und ein WSDL-File zu erstellen. Bei der Arbeit mit JAX-WS braucht man sich nicht um SOAP-Nachrichten zu kümmern, die JAX-WS API erledigt das semi-automatisiert für den Entwickler. Auch das WSDL-File kann von der IDE erzeugt werden, was die Anfangsschritte noch einfacher macht. 4.1 Ein Beispiel-Webservice 4.1.1 Web Service Es folgt ein Beispiel für einen einfachen Web Service, dessen WSDL-File und SOAP-Nachrichten im Kapitel 3 als Beispiele dienten: package helloservice; import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class Hello { private String message = new String ("Hello, "); @WebMethod public String sayHallo(String name) { return message + name; } } 11 Das @WebService definiert unsere Klasse als sogenannten endpoint vom Web Service. Die Klasse und die Methoden dürfen nicht final oder abstract sein. Die Methoden müssen als public deklariert werden. Sie müssen auch mit @WebMethod gekennzeichnet sein. Es gibt auch weitere Annotationen aus dem Packet javax.jws: • @SOAPBinding setzt den Stil der Nachrichten auf Dokument oder RPC. Bsp.: @SOAPBinding (style = SOAPBinding.Style.RPC) • @WebParam beschreibt die Parameter genauer. Durch @WebParam(name=“neuer Name“) wird der Parametername, der in WSDL erscheint, mit dem angegebenen neuen Namen überschrieben. Bsp.: public double bmi( @WebParam(name="height")double height, @WebParam(name="weight" double weight) {..} • @WebResult ist eine optionale Angabe und definiert die Rückgabe einer Web-Service-Methode genauer, z. B.: @WebResult(name="HelloMethodResult") • @OneWay wird für asynchrone Aufrufe verwendet: es wird nicht auf die Antwort gewartet, sondern weiter gearbeitet. Das wsgenTool generiert XML-Artefakte wie WSDL, XML-Schemata, die für das Funktionieren des Web Services benötigt werden. Zusammen mit Application Server liefert wsgen eine Implementierung des Aplication Servers von JAX-WS. Um einen Web Service zu implementieren, sind folgende 5 Schritte nötig: 1. Codieren der Implementierung für die Klasse. 2. Die Klasse compilieren. 3. Mit Hilfe von wsgen nötige Dateien generieren. 4. Die Dateien in eine WAR Datei verpacken (Hauptpackformat für Webapplikationen). 5. Deploy der WAR Datei (z. B. über Tool des Web-Servers). 12 4.1.2 Client Für das Erstellen des Clients für einen Web Service sind folgende Schritte nötig: 1. Codieren der Client-Klasse (hier wird die URL des fertigen WSDL-Files gebraucht). 2. Mit wsimport Web Service Dateien generieren und Kompilieren, um Verbindung zum Web Service herzustellen. 3. Die Client Klasse kompilieren. 4. Den Client zum Laufen bringen. So sieht z. B. ein einfacher Client aus: import javax.xml.ws.WebServiceRef; import helloservice.endpoint.HelloService; import helloservice.endpoint.Hello; public class HelloClient { @WebServiceRef(wsdlLocation= "http://localhost:8080/helloservice/hello?wsdl") static HelloService service; public static void main(String[] args) { try { HelloClient client = new HelloClient(); client.doTest(args); } catch(Exception e) { e.printStackTrace(); } } public void doTest(String[] args) { try { System.out.println("Retrieving the port from the following service: " + service); Hello port = service.getHelloPort(); System.out.println("Invoking the sayHello operation on the port."); String name; if (args.length > 0) { 13 name = args[0]; } else { name = "No Name"; } String response = port.sayHello(name); System.out.println(response); } catch(Exception e) { e.printStackTrace(); } } } 5 Vor- und Nachteile von Web Services JAX-WS ist das moderne Web-Service-Programmiermodell, das die vom Programmiermodell JAX-RPC bereitgestellte Grundlage ergänzt. Die JAX-WS Spezifizierung liefert Modernisierungen und neue Features bei der Entwicklung von Web Services (z. B. Unterstützung von Annotationen der Web Services und Tools für die Entwicklung der s. g. portable artifacts“). Es stellt neue Möglich” keiten für Entwickler bereit und erweitert die Grenzen des Internets. Es gibt sehr viele Vorteile, die Web Services mit sich bringen: • Eine einfache und flexible Gestaltung von Geschäftsprozessen, Effizientere Projektabwicklung: Durch die Verwendung von bereits bestehenden und weit verbreiteten Internet-Standards (HTTP, XML etc.) entsteht eine offene und flexible Architektur, die unabhängig von den verwendeten Plattformen, Programmiersprachen und Protokollen ist. • Geringere Projektkosten, Investitionsschutz und Zukunftssicherheit: Die verwendeten offenen Standards vermeiden einige Lizenzkosten. Da zu diesen Standards auch die allgegenwärtigen internetbasierten Technologien gehören, lassen sie sich auch vielerorts einsetzen. Auch hier liegt ein Kostenvorteil. • Web Services können faktisch auf jedes Übertragungsprotokoll aufsetzen. Wobei Web Services auch nicht ohne Nachteile sind: • Die Hauptschwierigkeiten bei der Umsetzung von Web Services dürften Sicherheitsaspekte betreffen. So ist beim Transport zu beachten, dass wichtige Web Services verschlüsselt werden oder eine Authentifizierung stattfindet. 14 • Ein besonderes Augenmerk liegt auf der Performance. Diese wird durch XML, Parsen und Dateigröße negativ beeinflusst. Der Verwaltungsaufwand nimmt bei stark verteilten Systemen zu. 6 Demoprojekt In meinem Demoprojekt wird die Zusammenarbeit von Web Services dargestellt: es wird ein fertiger Web Service, ein selbsterstellter Web Service und ein Client benutzt. Das Programm zeigt schematisch, wie ein Internetgeschäft, das Aktien verkauft, funktioniert. Der fertige Service liefert Aktienpreise von angefragten Firmen, die an selbsterstellten Service weitergeleitet werden, wo sie bearbeitet werden und anschliessend an den Client gesendet werden. Die Aufgabe des Clients ist die übergebene Information mit Hilfe von Servlets zu überarbeiten und durch JSP (JavaServer Pages) anzuzeigen. 7 Zusammenfassung Web Services ermöglichen eine problemlose Kommunikation zwischen unterschiedlichen Systemen, wodurch eine interoperable Informationsübermittlung entsteht. Zusammenspiel von WSDL, SOAP und HTTP ermöglichen diese Interaktion. Sicherheit ist ein Kernaspekt beim Einsatz von Web Services, insbesondere da die zugrunde liegenden Protokolle wie TCP/IP oder HTTP für sich allein unsichere Transportmechanismen sind und weder XML noch SOAP inhärente Sicherheitsmechanismen aufweisen. Im Wesentlichen wird zwischen Sicherheitsmaßnahmen auf Applikations- und Transport-Ebene unterschieden. In Transport-Ebene wird SSL (Secure Socket Layer) benutzt, aber es bietet nicht genügend Sicherheit, da SOAP-Message-Header und SOAP-Body nicht verschlüsselt werden können, weil sonst wichtige Routing-Informationen verloren gingen. Deshalb wird auch Sicherheit auf Applikations-Ebene benutzt, die s. g. WS-Security. Sie erweitert SOAP um Funktionen wie Verschlüsselung und digitale Signaturen. In WS-Security wird festgeschrieben, wo genau in einer WebService-Schnittstellendefinition die Sicherheitsinformationen untergebracht sind und dadurch wird fast vollständige Sicherheit der Daten garantiert [9]. Die Weiterentwicklung von Web Services wird hauptsächtlich von IBM und Microsoft beeinflusst und bereits jetzt bauen diese Unternehmen ihre Unternehmensstrategie auf dieser Technologie auf. Aber auch andere Softwarehersteller wie BEA, Computer Associates, IBM, Microsoft, SAP oder Sun, aber auch Unternehmen aus anderen Branchen wie Bell, BT, die Deutsche Bank, die Deutsche Telekom und Nokia sind in der Weiterentwicklung und Weiterverbreitung von Web Services sehr interessiert, deshalb haben sie eine Web Services Interoperability Organization (WS-I, www.ws-i.org) gegründet, die als Hauptaufgabe hat die Verbreitung von interoperablen Web Services über die Grenzen von Plattformen, Applikationen und Programmiersprachen hinweg zu fördern [10]. 15 Literatur [1] David A. Chappell, Tyler Jewell Java Web Services. O´Reilly, March 2002, ISBN: 0-596-00269-6 [2] James McGovern, Sameer Tyagi, Michael Stevens, Sunil Matthew Java Web Services Architecture . Morgan Kaufmann Publishers, 2003, ISBN:1558609008 [3] Andrew S. Tanenbaum, Maarten van Steen Verteilte Systeme (Prinzipien und Paradigmen)2., aktualisierte Auflage . 2008, ISBN 978-3-8273-7293-2 [4] Christian Ullenboom Java ist auch eine Insel,7., aktualisierte Auflage . 2007, ISBN 978-3-8362-1146-8 [5] Jurgen Dunkel, Andreas Eberhart, Stefan Fischer, Carsten Kleiner, Arne Koschel Systemarchitekturen für verteilte Anwendungen . Hanser, 2008, ISBN 978-3-446-41321-4 [6] http://java.sun.com/javaee/5/docs/tutorial/doc/bnayk.html Dokumentation zu Web Services von SUN, 2009 [7] http://publib.boulder.ibm.com/infocenter/radhelp/v6r0m1/index.jsp?topic=/ com.ibm.etools.webservice.doc/concepts/cwstopdown.html Dokumentation zu Entwicklung von Web Services von IBM, 2009 [8] www.w3.org Dokumentation zum Standard W3C, 2009 [9] entwickler.com Web Services-Sicherheit und die SAML Marc Chanliau, April 2006 [10] www.informationweek.de Kommunikation per Web Services Stefan Zill, Mai 2005 16