Da die Webservice-Schnittstelle durch die WSDL klar definiert ist, können frei verfügbare Webservice-Bibliotheken diese Definition verarbeiten und daraus Proxy-Klassen generieren, die die notwendigen SOAP-Anfragen kapseln und dadurch eine effiziente Entwicklung von Clientanwendungen ermöglichen. In diesem Kapitel wird dies anhand Suns Referenzimplemenentierung von JAX-WS und der Bibliothek Apache Axis2 gezeigt.

Im Lieferumfang des Java Development Kit (JDK) Version 1.7 befindet sich das Kommandozeilentool wsimport, mit dem Proxy-Klassen generiert werden können. Ist der Webservice von jadice server wie in Abschnitt „Konfiguration Webservice-Schnittstelle“ beschrieben aktiviert worden, werden mit folgendem Aufruf die notwenden Clientklassen erzeugt:

        <jdk1.7>\bin\wsimport http://localhost:9000/jadiceServer?wsdl -keep -extension 
      

Der Parameter -keep bewirkt, dass nicht nur die Klassen, sondern auch deren Quelltexte gespeichert werden. Zur weiteren Entwicklung empfehlt es sich, mit diesen weiter zu arbeiten. Abbildung 7.2, „Von JAX-WS generierte Klassen“ zeigt die generierten Klassen, die in die Entwicklungsumgebung eingebunden werden können.


Einstiegspunkte für eine Clientanwendung sind die Klassen JadiceServerJobInvoker und JobInvocationService, über die ein Zugriff auf die SOAP-Schnittstelle erfolgt, und die Klasse JobConfiguration über die der Aufruf konfiguriert wird. Eine minimale Implementierung kann so aussehen:


Apache Axis2 ist unter http://axis.apache.org/axis2/java/core/ verfügbar und steht unter der Apache License. Ist der Webservice von jadice server wie in Abschnitt „Konfiguration Webservice-Schnittstelle“ beschrieben aktiviert worden, werden mit folgendem Aufruf die notwendigen Clientklassen erzeugt:

          <AXIS2_HOME>\bin\wsdl2java
	        -o generatedCode
	        -p com.levigo.jadice.server.ws.client.axis2.stub 
	        -d jaxbri 
	        -uri http://localhost:9000/jadiceServer?wsdl
      

Die Verwendung der Parameter -o für das Ausgabeverzeichnis und -p für den zu verwendenden Paketnamen sind optional. Der Parameter -d bestimmt, welches Databinding für die Wandlung nach / von XML verwendet werden soll. Standard ist das Apache Axis Data Binding (ADB). Dieses hat in der aktuellen Fassung jedoch Probleme mit der Deserialisierung von SOAP/MTOM-Attachments, sodass stattdessen auf die JAX-B Referenzimplemenentierung (jaxbri) zurückgegriffen werden sollte.

Einstiegspunkte für eine Clientanwendung sind die Klassen JadiceServerJobInvokerStub und Run, über die ein Zugriff auf die SOAP-Schnittstelle erfolgt, und die Klasse JobConfiguration, über die der Aufruf konfiguriert wird. Eine minimale Implementierung kann so aussehen:


[jadice server Version 5.0.5.0: Dokumentation für Entwickler und Administratoren. Veröffentlicht: 2014-06-16]
loading table of contents...