Webdienst-Client – Übersicht

Webdienste verwenden normalerweise SOAP anstelle des HTTP-Protokolls. In einem solchen Szenario werden SOAP-Pakete gesendet. Wenn Collections und andere komplexe Objekte in SOAP-Paketen gebündelt werden, ist es kaum möglich, die ASCII-Datenstrukturen zu lesen und zu bearbeiten. Unerfahrene Entwickler sollten nicht versuchen, einen Webdienst-Client durch direkte Bearbeitung von SOAP-Paketen zu erstellen. Erfahrene Entwickler erstellen normalerweise keine Webdienst-Clients auf SOAP-Paket-Ebene. Ein solches Vorgehen wäre mühsam und fehleranfällig. Aus diesem Grund stellen alle wichtigen Programmiersprachen Entwicklungs-Kits für Webdienste bereit. In Silk Central wird Java API for XML Web Services (JAX-WS) zur Erstellung von Webdiensten und Clients verwendet, die über SOAP-Nachrichten kommunizieren.

Unabhängig von der Programmiersprache (Java, C++, C#, Perl oder Python) folgt die Erstellung von Webdienst-Clients einem immer gleichen Muster:

  1. Weisen Sie einem Entwicklungs-Kit die Webdienst-WSDL zu.
  2. Ermitteln Sie einen Client-Rumpf.
  3. Bearbeiten Sie den in Schritt 2 generierten Client-Rumpf so, dass Sie einen funktionsfähigen Client erhalten.
JAX-WS folgt diesem Muster. In unseren Beispielen wird das Tool "wsimport" (im JDK enthalten) verwendet, um Client-Stubs aus der WSDL zu erstellen. Weitere Informationen über die Verwendung von wsimport finden Sie auf JDK Tools and Utilities documentation. A brief description of the switches used in the above summary is as follows:
  • -s: Das Ausgabeverzeichnis der Client-Rümpfe
  • -p: Das Zielpaket. In dieser Paketstruktur einsetzen

Beispiel: wsimport -s <Speicherort der generierten Stubs> -p <Zielpaket> <WSDL>

Das Tool wsimport generiert mehrere Klassen, die einen Client für den Webdienst unterstützen. Wenn der Name des Dienstes YourWebService ist, werden die folgenden Klassen ausgegeben:

Erstellen Sie eine neue Java-Klasse namens YourWebServiceClient, um einen JAX-WS-Client zu generieren, mit dem Silk Central-Webdienste verwendet werden können. Der Webdienst muss durch einen Port gebunden werden; ein Port ist ein logisches Objekt, das als Proxy für den Remote-Dienst auftritt. Beachten Sie, dass der Port durch die Ausführung des wsimport-Tools im oberen Schritt erstellt wurde. Um diesen Proxy zu erhalten, rufen Sie die Methode getRequirementsServicePort auf dem Dienst auf:

// Bind to the Requirements service
  RequirementsServiceService port = new RequirementsServiceService
    (new URL("http", mHost, mPort, "/Services1.0/jaxws/requirements?wsdl"));
  RequirementsService requirementsService = port.getRequirementsServicePort();

Um sich bei den Webdiensten zu authentifizieren, generieren Sie ein Webdienst-Token auf der Seite Benutzereinstellungen der Silk Central-Benutzeroberfläche. Um auf diese Seite zuzugreifen, zeigen Sie mit dem Mauszeiger auf den Benutzernamen im Menü Silk Central und wählen Sie Benutzereinstellungen.

Sie können ebenfalls die Methode logonUser des Dienstes aufrufen, indem Sie Benutzername und Kennwort übergeben, um eine Sitzungs-ID zu erhalten:

// Login to Silk Central and get session ID
  String sessionId = requirementsService.logonUser(mUsername, mPassword);