Java bringt Webserver mit
Das JDK 6 bietet eine integrierte Laufzeitumgebung für Webservices, die Anwender leicht aufsetzen. Die Server-Klasse in Listing 2 bietet hierbei nur eine »main()«-Methode zum Starten via Konsole und bindet den Service an einen bestimmten Endpoint. Dieser Endpoint enthält die Adresse, unter der der Service per HTTP zu erreichen ist. Beim Übersetzen generiert Java die notwendigen Klassen, um XML in Java-Methodenaufrufe umzuwandeln:
javac -d bin src/de/lm/wssample/server/*.java wsgen -cp bin -s src -d bin de.lm.wssample.server.KundenAnfrage
Weil er später eine WSDL-Datei benötigt, ruft der Programmierer »wsgen« mit der Option »-wsdl« auf:
wsgen -cp bin -s src -d bin -wsdl de.lm.wssample.server.KundenAnfrage
Für den Server startet der User einfach die Server-Klasse als Java--Applikation:
java -cp bin de.lm.wssample.server.Server
Um wie in Abbildung 4 zu kommunizieren, fehlt nun noch der Client.
Abbildung 4: Der Clientcode ruft Stubs auf, die sich mit der WS-Laufzeitumgebung verbinden. Diese überträgt Nachrichten per SOAP zum Server. Dort erreichen die Daten schließlich die Service-Implementation.
|
Listing 2: Implemenation des |
|---|
01 package de.lm.wssample.server;
02
03 import javax.xml.ws.Endpoint;
04
05 public class Server
06 {
07 /**
08 * Startet Server für den Kundenabfrage-Service
09 */
10 public static void main(String[] args)
11 {
12 KundenAnfrage service = new KundenAnfrage();
13 Endpoint endPoint = Endpoint.publish(
14 "http://localhost:8088/kundenanfrage", service);
15 }
16 }
|
WSDL gebiert Client
Das JDK 6 generiert auch Klassen, die die XML-Verwaltung und den Versand der Nachrichten kapseln. Um diese Stubs zu erzeugen, verbindet sich das Java-Programm »wsimport« zum Server und holt sich von dort die WSDL-Definitionen. Der vom Tool generierte Code für den Client besteht aus einer als Stub bezeichneten Java-Klasse (siehe Listing 3). Er lässt den Service-Aufruf wie eine lokale Methode aussehen. Entwickler sollten bedenken, dass sie eine Methode in einem entfernten System aufrufen. Daher müssen sie Verbindungsabbrüche und Timeouts einplanen.
|
Listing 3: Client-Stubs |
|---|
01 wsimport -p de.lm.wssample.client.generated 02 -keep -d bin 03 -s src http://localhost:8088/kundenanfrage?wsdl |
|
Listing 4: Service-Stubs |
|---|
01 package de.lm.wssample.client;
02
03 import de.lm.wssample.client.generated.KundenAnfrage;
04 import de.lm.wssample.client.generated.KundenAnfrageService;
05
06 public class ServiceClient {
07 public static void main(String[] args) {
08 KundenAnfrageService server =
09 new KundenAnfrageService();
10 KundenAnfrage svc =
11 server.getKundenAnfragePort();
12 System.out.println("Anfrage: " + args[0]);
13 String antwort = svc.stelleAnfrage(args[0]);
14 System.out.println("Antwort: " + antwort);
15 }
16 }
|
JAX-WS unterstützt ab Version 2.0 als Teil des JDK 6 sowohl den synchronen, also blockierenden, Aufruf, als auch den asynchronen Aufruf einer Service-Methode, der etwas mehr Code benötigt. Listing 4 implementiert einen Client, der den Webservice synchron aufruft.
Programmierer übersetzen ihn mit dem Compiler »javac« und starten ihn mit
javac -d ./bin -cp ./bin src/de/lm/wssample/client/ServiceClient.java java -cp bin de.lm.wssample.client.ServiceClient "Schneit es auf dem Mond?"
Der Clientcode ruft die Methode des Service-Stubs auf und erhält den Rückgabewert der Operation des entfernten Service. Der Webservice bearbeitet die Frage "Schneit es auf dem Mond?" und der Client gibt das Beispiel auf der Standardausgabe aus. Abbildung 5 zeigt alle verwendeten Dateien im Überblick.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





