eMail
 Suche
 Impressum

Unterabschnitte


4. Web-Service Software-Entwicklung

In diesem Kapitel möchte ich beispielhaft vermitteln, wie man Web-Services bereitstellen kann und wie man Software entwickeln kann, die Web-Services nutzt.
Die Entwicklung entsprechender Programme wird auf Basis von Apache/Tomcat Axis durchgeführt. Da diese Dienste auf Java basieren sollten entsprechende Grundkenntnisse in der Programmierung von Java vorhanden sein, jedoch dürften die Konzepte auch ohne solche verstanden werden.

4.1 Voraussetzungen

Zum reibungslosen Entwickeln sind folgende Punkte zu erfüllen:
  • Installiertes und lauffähiges Java SDK 1.4.x [20]. Die Version ihres installierten Java können sie über den Befehl java -version herausfinden. java muss sich dazu im Pfad befinden.
  • Installierte und lauffähige Version von Apache/Tomcat inklusive der Web-Applikation Axis 3.4.2. Für genaue Installationsanweisungen konsultieren sie http://ws.apache.org/axis/java/install.html.
  • Der Benutzer, unter dessen Profil Tomcat läuft, benötigt Schreibrechte auf das Axis-Verzeichnis. Unter meiner Installation (/usr/share/java/webapps/axis) habe ich einfach mit chown -R tomcat4.users /usr/share/java/webapps/axis Tomcat diese Rechte zugesprochen.

Ich habe die Entwicklung auf [10, Debain/GNU Linux 3.1 Sarge] durchgeführt.

4.2 Entwicklung mit Java und Axis

Die nachfolgende kurze Einleitung kann detaillierter unter http://ws.apache.org/axis/java/user-guide.html nachvollzogen werden.

4.2.1 Web-Service Bereitstellung

Die Entwicklung eines eigenen Web-Services unter Axis gestaltet sich erstaunlich einfach. Hat man die Voraussetzungen erfüllt, dann steht einer Publizierung nichts mehr im Wege. Für einen einfachen Service sind wenige Handgriffe erforderlich.

4.2.1.1 Code

Dieser kleine Beispiel-Code stellt einen Web-Service bereit, der für zwei Zahlen eine Berechnung durchführt (Subtraktion und Addition). Das Beispiel mag vielleicht wenig nützlich sein, doch demonstriert es die Einfachheit der Programmierung.

Man sollte vor der Veröffentlichung sicherstellen, dass der Code sich kompilieren lässt. Dies kann man durch javac Calculator.jws erreichen.

Sie können den Code hier herunterladen .

public class Calculator {
  public int add(int i1, int i2)
  {
    return i1 + i2;
  }
  
  public int subtract(int i1, int i2)
  {
    return i1 - i2;
  }
}


4.2.1.2 Veröffentlichung

Die Veröffentlichung des Web-Services ist denkbar einfach. Man muss lediglich den entwickelten Code als Datei mit der Endung .jws A.3 speichern und in das Axis-Verzeichnis (z.B. /usr/share/java/webapps/axis/) kopieren.

Die Axis-Installation kümmert sich nun um die Kompilation und um Bereitstellung eines WSDL. Dies geschieht beim ersten Aufruf des Services jedes mal erneut, wenn sich der Code seit dem letzten Aufruf geändert hat.
Unter http://localhost:8180/axis/Calculator.jws kann man den Zustand des Services überprüfen (den Port entsprechend ihrer Installation wählen). Achtung: Tomcat benötigt Schreibrechte auf das Verzeichnis axis/WEB-INF/ (siehe auch 4.1.

4.2.1.3 Komplexere Services

Nun könnte man sich vorstellen einen sehr aufwändigen Algorithmus in Java zu implementieren und auf diese Weise zu publizieren. Dann können Programme über SOAP diesen Algorithmus mit den entsprechenden Parametern aufrufen. Um die Rechenzeit muss sich dann der Server kümmern, auf dem dieser Service läuft.

Die eben vorgestellte Methode zur Veröffentlichung eines Web-Services ist jedoch nicht für komplexe Infrastrukturen geeignet. Packages sind nicht möglich, und man weiß bis zur Ausführung nicht wirklich, ob der Code richtig funktioniert.

Zum Entwickeln komplexer Anwendungen und Infrastrukturen bietet sich Axis Web Service Deployment Descriptor (WSDD) an. Weiterführende Dokumentation zu diesem Thema entnehmen sie der Dokumentationsseite unter http://ws.apache.org/axis/java/user-guide.html.

4.2.2 Web-Service Nutzung

Die Nutzung des Web-Services gestaltet sich ein wenig aufwändiger: Das folgende Beispielprogramm kontaktiert unseren Web-Service Calculator unter http://localhost:8180/axis/Calculator.jws. Die Beschreibung in WSDL kann unter http://localhost:8180/axis/Calculator.jws?wsdlangeschaut werden. Der einfache Service Calculator returniert die Berechnung der beiden übergeben Parameter ``i1'' und ``i2'', in diesem Fall einen Integer (``addResponse'' oder ``subtractResponse'').

4.2.2.1 Code

Sie können den Code hier herunterladen .

 1 import org.apache.axis.client.Call;
 2 import org.apache.axis.client.Service;
 3 import javax.xml.namespace.QName;
 4  
 5 public class TestClient {
 6  public static void main(String [] args) {
 7   try {
 8    String endpoint =
 9      "http://localhost:8180/axis/Calculator.jws";
10 
11    Service  service = new Service();
12    Call  call = (Call) service.createCall();
13 
14    call.setTargetEndpointAddress( new java.net.URL(endpoint) );
15    call.setOperationName(new QName("http://soapinterop.org/", args[0]));
16 
17    Integer ret = (Integer) call.invoke( new Object[] { Integer.valueOf(args[1]), Integer.valueOf(args[2]) } );
18  
19    System.out.println("Sent '"+args[0]+" "+args[1]+" "+args[2]+"', got '" + ret + "'");
20   } // try
21   catch (Exception e) {
22    System.err.println(e.toString());
23   } // catch
24  } // main
25 } // class

Zeilen Beschreibung
1-3 Import von benötigten Klassen
8-9 Festlegung der Adresse, zu der sich der Client verbinden soll
11-12 Hier werden nun ein JAX-RPC-Objekte vorbereitet: ``Service'' und ``Call''. Diese Objekte speichern Metadaten und weiter unten dann mit zusätzlichen Parametern gefüllt und ausgeführt.
14 Die in 8-9 festgelegte Adresse wird gesetzt, das Ziel der SOAP-Nachricht
15 An dieser Stelle wird die aufzurufende Methode gesetzt
17 Hier wird nun der eigentliche Aufruf des Services initiiert. Als Parameter wird ein Array von Objekten übergeben, dessen Dimension mit der Definition des Services (WSDL B) übereinstimmen muss. In unserem einfachen Beispiel sind dies zwei Integer, von daher wird ein zweielementiger Array übergeben.
  Als Ergebnis erhalten wir einen Integer zurück.4.1

4.2.2.2 Übersetzung und Ausführung

Zunächst muss man dafür sorgen, dass der Java-Compiler die benötigten Axis-Klassen findet (.jar). Diese befinden sich unter /usr/share/java/webapps/axis/WEB-INF/lib/. Hat mal also den CLASSPATH gesetzt, kann man mit javac TestClient.java den Client übersetzen.
> export CLASSPATH=...
> javac TestClient.java

Die Ausführung geschieht ähnlich. Auch hier muss man wieder dafür sorgen, dass die benötigten Klassen auffindbar sind. Nun kann man folgende Befehle (hier beispielhaft) ausführen:

> export CLASSPATH=...
> java TestClient add 10 20
Sent 'add 1 2', got '30'

> java TestClient subtract 10 20
Sent 'subtract 10 20', got '-10'

http://www.psitronic.de/ti/semanticweb/wsa/
Menü

Home
Funstuff
Linux
Hardware
Distributionen
Spiele
Kontakt
Projekte
Java
Webcut
Strength and Honor
A-Mobile
Holy-Wars 2
Holy-Wars 3
-> Dokumentation
Biometrie
Performanzermittlung
Mmpg
Mmpg-peer to peer
Javadoc
Mmpgp2p-Server
-> Semantic Web
-> WSA



- Impressum -
designed using WebCut - Copyright (c) 2001-2008 by Markus Sinner