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

SQL Anywhere 12.0.1 (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.

 Einrichten eines Datenbankservers für den Empfang von RAW-Anforderungen und das Senden von RAW-Antworten
  1. Starten Sie die SQL Anywhere-Datenbank demo mit dem folgenden Befehl:

    dbsrv12 -xs http(port=8082) "%SQLANYSAMP12%\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 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. Es ruft die Prozedur ListEmployees auf, wenn ein Webclient eine Anforderung an den Dienst sendet.

    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. Weitere Informationen zur EXPLICIT-Klausel finden Sie unter CREATE PROCEDURE-Anweisung [Webdienste].

    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. Weitere Informationen zur DATATYPE-Klausel finden Sie unter CREATE PROCEDURE-Anweisung [Webdienste].

  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, da er als WS/EmployeeList deklariert ist.

  6. Vergewissern Sie sich, dass der DISH-Webdienst funktionsfähig ist, indem Sie über einen Webbrowser darauf 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 Browser-Fenster 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.

  7. (Optional) Setzen Sie die Beispieldatenbank (demo.db) in ihren ursprünglichen Zustand zurück. Siehe Neuerstellung der Beispieldatenbank (demo.db).

 Siehe auch