Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » HTTP-Webdienste » Beispiele für HTTP-Webdienste » Praktische Einführung: Verwenden von JAX-WS für den Zugriff auf einen SOAP/DISH-Webdienst

 

Lektion 1: Einrichten eines Webservers für den Empfang von SOAP-Anforderungen und das Senden von SOAP-Antworten

In dieser Lektion richten Sie einen SQL Anywhere-Webserver ein, auf dem SOAP- und DISH-Webdienste ausgeführt werden und der die Anforderungen der JAX-WS-Clientanwendung verarbeitet.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Verwenden von JAX-WS für den Zugriff auf einen SOAP/DISH-Webdienst.

Kontext und Bemerkungen

In dieser Lektion wird der Webserver eingerichtet sowie ein einfacher Webdienst, den Sie in der nächsten Lektion verwenden werden. Es kann aufschlussreich sein, Proxy-Software zu verwenden, um das XML-Nachrichtenaufkommen zu beobachten. Der Proxy fügt sich zwischen Ihrer Clientanwendung und dem Webserver ein.

 Aufgabe
  1. Starten Sie die SQL Anywhere-Demodatenbank mit dem folgenden Befehl:

    dbsrv16 -xs http(port=8082) "%SQLANYSAMP16%\demo.db"

    Dieser Befehl gibt an, dass der HTTP-Webserver an Port 8082 auf Anforderungen warten soll. Verwenden Sie eine andere Portnummer, wenn die Verwendung von 8082 in Ihrem Netzwerk nicht zulässig ist.

  2. Stellen Sie in Interactive SQL mit dem folgenden Befehl eine Verbindung zum Datenbankserver her:

    dbisql -c "UID=DBA;PWD=sql;SERVER=demo"
  3. Erstellen Sie eine gespeicherte Prozedur, die die Spalten der Tabelle Employees auflistet.

    Führen Sie hierzu die folgende SQL-Anweisung in Interactive SQL aus:



    CREATE OR REPLACE PROCEDURE ListEmployees()
    RESULT (
        EmployeeID            INTEGER,
        Surname               CHAR(20),
        GivenName             CHAR(20),
        StartDate             DATE,
        TerminationDate       DATE )
    BEGIN
        SELECT EmployeeID, Surname, GivenName, StartDate, TerminationDate 
        FROM Employees;
    END;

    Diese Anweisungen erstellen eine neue Prozedur mit dem Namen ListEmployees, die die Struktur der Ausgabe der Ergebnismenge definiert und bestimmte Spalten der Tabelle "Employees" auswählt.

  4. Erstellen Sie einen neuen SOAP-Dienst zum Annehmen der eingehenden Anforderungen.

    Führen Sie die folgende SQL-Anweisung in Interactive SQL aus:

    CREATE SERVICE "WS/EmployeeList"
        TYPE 'SOAP'
        FORMAT 'CONCRETE' EXPLICIT ON
        DATATYPE ON
        AUTHORIZATION OFF
        SECURE OFF
        USER DBA
        AS CALL ListEmployees();

    Diese Anweisung erstellt einen neuen SOAP-Dienst mit dem Namen WS/EmployeeList, der als Ausgabe einen SOAP-Typ generiert. Der Dienst ruft die ListEmployees-Prozedur auf, wenn ein Webclient eine Anforderung an ihn sendet. Der Dienstname ist in Anführungszeichen gesetzt, weil darin ein Schrägstrich (/) vorkommt.

    SOAP-Webdienste, auf die von JAX-WS aus zugegriffen wird, sollten mit der FORMAT 'CONCRETE'-Klausel deklariert werden. Die EXPLICIT ON-Klausel gibt an, dass der entsprechende DISH-Dienst ein XML-Schema generieren soll, das ein explizites DataSet-Objekt basierend auf der Ergebnismenge der Prozedur ListEmployees beschreibt. Die EXPLICIT-Klausel wirkt sich nur auf das generierte WSDL-Dokument aus.

    DATATYPE ON gibt an, dass explizite Datentypinformationen in der zurückgegebenen XML-Ergebnismenge und den Eingabeparametern generiert werden. Diese Option wirkt sich nicht auf das WSDL-Dokument aus, das generiert wird.

    Wenn Sie sich mit einer anderen Benutzer-ID angemeldet haben, muss die USER DBA-Klausel gemäß Ihrer Benutzer-ID geändert werden.

  5. Erstellen Sie einen neuen DISH-Dienst, der als Proxy für den SOAP-Dienst agiert und das WSDL-Dokument generiert.

    Führen Sie die folgende SQL-Anweisung in Interactive SQL aus:

    CREATE SERVICE WSDish
        TYPE 'DISH'
        FORMAT 'CONCRETE'
        GROUP WS
        AUTHORIZATION OFF
        SECURE OFF
        USER DBA;

    DISH-Webdienste, auf die von JAX-WS aus zugegriffen wird, sollten mit der FORMAT 'CONCRETE'-Klausel deklariert werden. Die GROUP-Klausel kennzeichnet die SOAP-Dienste, die vom DISH-Dienst verarbeitet werden sollen. Der im vorherigen Schritt erstellte EmployeeList-Dienst ist Teil der GROUP WS, weil er als WS/EmployeeList deklariert ist. Wenn Sie sich mit einer anderen Benutzer-ID angemeldet haben, muss die USER DBA-Klausel gemäß Ihrer Benutzer-ID geändert werden.

  6. Vergewissern Sie sich, dass der DISH-Webdienst funktionsfähig ist, indem Sie über einen Webbrowser auf das zugehörige WSDL-Dokument zugreifen.

    Öffnen Sie Ihren Webbrowser und gehen Sie zu [external link] http://localhost:8082/demo/WSDish.

    Der DISH-Dienst generiert automatisch ein WSDL-Dokument, das im Browserfenster angezeigt wird. Überprüfen Sie das Objekt EmployeeListDataset, das der folgenden Ausgabe ähnelt:



    <s:complexType name="EmployeeListDataset">
    <s:sequence>
    <s:element name="rowset">
      <s:complexType>
      <s:sequence>
      <s:element name="row" minOccurs="0" maxOccurs="unbounded">
        <s:complexType>
        <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="EmployeeID" nillable="true" type="s:int" /> 
        <s:element minOccurs="0" maxOccurs="1" name="Surname" nillable="true" type="s:string" /> 
        <s:element minOccurs="0" maxOccurs="1" name="GivenName" nillable="true" type="s:string" /> 
        <s:element minOccurs="0" maxOccurs="1" name="StartDate" nillable="true" type="s:date" /> 
        <s:element minOccurs="0" maxOccurs="1" name="TerminationDate" nillable="true" type="s:date" /> 
        </s:sequence>
        </s:complexType>
      </s:element>
      </s:sequence>
      </s:complexType>
    </s:element>
    </s:sequence>
    </s:complexType>

    EmployeeListDataset ist das explizite Objekt, das durch die Klauseln FORMAT 'CONCRETE' und EXPLICIT ON im SOAP-Dienst EmployeeList generiert wird. In einem späteren Schritt verwendet die wsimport-Anwendung diese Informationen, um eine SOAP 1.1-Clientschnittstelle für diesen Dienst zu generieren.

Ergebnisse

Sie haben einen SQL Anywhere-Webserver eingerichtet, auf dem SOAP- und DISH-Webdienste ausgeführt werden, die JAX-WS-Clientanwendungsanforderungen bearbeiten können.

Nächste Schritte

In der nächsten Lektion erstellen Sie eine Java-Anwendung für die Kommunikation mit dem Webserver. Gehen Sie weiter zu Lektion 2: Java-Anwendung für die Kommunikation mit dem Webserver erstellen.

 Siehe auch