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 » SQL Anywhere サーバ プログラミング » HTTP Web サービス » HTTP Web サービスの例 » チュートリアル:JAX-WS を使用した SOAP/DISH Web サービスへのアクセス

 

レッスン 1:SOAP 要求を受信し SOAP 応答を送信する Web サーバの設定

このレッスンでは、JAX-WS クライアントアプリケーションの要求を処理する SOAP/DISH Web サービスが実行されている SQL Anywhere Web サーバを設定します。

前提条件

このレッスンでは、このチュートリアルの開始時に、権限のセクションで一覧されているロールと権限を持っていることを前提としています。 チュートリアル:JAX-WS を使用した SOAP/DISH Web サービスへのアクセス

内容と備考

このレッスンでは、次のレッスンで使用する Web サーバと単純な Web サービスを設定します。プロキシソフトウェアを使用して XML メッセージトラフィックを確認します。プロキシは、クライアントアプリケーションと Web サーバの間に挿入されます。

 ♦ タスク
  1. 次のコマンドを使用して SQL Anywhere デモデータベースを起動します。

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

    このコマンドは、HTTP Web サーバがポート 8082 で要求を受信することを指定します。ネットワークで 8082 が許可されない場合は、異なるポート番号を使用します。

  2. 次のコマンドを使用して Interactive SQL でデータベースサーバに接続します。

    dbisql -c "UID=DBA;PWD=sql;SERVER=demo"
  3. Employees テーブルカラムをリストするストアドプロシージャを作成します。

    Interactive SQL で次の SQL 文を実行します。



    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;

    これらの文は、結果セット出力の構造を定義する ListEmployees という新しいストアドプロシージャを作成し、Employees テーブルから特定のカラムを選択します。

  4. 着信要求を受け入れる新しい SOAP サービスを作成します。

    Interactive SQL で次の SQL 文を実行します。

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

    この文は、SOAP タイプを出力として生成する WS/EmployeeList という新しい SOAP Web サービスを作成します。Web クライアントがサービスに要求を送信すると、ListEmployees プロシージャが呼び出されます。サービス名は、そのサービス名に出現するスラッシュ文字 (/) のため、引用符で囲まれています。

    JAX-WS からアクセスする SOAP Web サービスは、FORMAT 'CONCRETE' 句で宣言する必要があります。EXPLICIT ON 句は、ListEmployees プロシージャの結果セットに基づいて、対応する DISH サービスで明示的なデータセットオブジェクトを記述する XML スキーマを生成することを示します。EXPLICIT 句の影響を受けるのは、生成される WSDL ドキュメントのみです。

    DATATYPE ON は、明示的なデータ型情報が XML 結果セットの応答と入力パラメータで生成されることを示します。このオプションは、生成される WSDL ドキュメントに影響しません。

    別のユーザ ID でログインする場合、そのユーザ ID を反映するように USER DBA を変更する必要があります。

  5. SOAP サービスのプロキシとして機能し、WSDL ドキュメントを生成する新しい DISH サービスを作成します。

    Interactive SQL で次の SQL 文を実行します。

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

    JAX-WS からアクセスする DISH Web サービスは、FORMAT 'CONCRETE' 句で宣言する必要があります。GROUP 句は、DISH サービスによって処理される必要がある SOAP サービスを識別します。前の手順で作成した EmployeeList サービスは、WS/EmployeeList として宣言されているため、GROUP WS の一部になります。別のユーザ ID でログインする場合、そのユーザ ID を反映するように USER DBA を変更する必要があります。

  6. Web ブラウザで関連 WSDL ドキュメントにアクセスして、DISH Web サービスが機能していることを確認します。

    Web ブラウザを開き、[external link] http://localhost:8082/demo/WSDishにアクセスします。

    DISH は、ブラウザのウィンドウに表示される WSDL ドキュメントを自動生成します。EmployeeListDataset オブジェクトを確認します。次のような出力になります。



    <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 は、EmployeeList SOAP サービスの FORMAT 'CONCRETE' 句と EXPLICIT ON 句で生成された明示的なオブジェクトです。この後のレッスンで、wsimport アプリケーションはこの情報を使用して、このサービス用の SOAP 1.1 クライアントインタフェースを生成します。

結果

JAX-WS クライアントアプリケーションの要求を処理できる SOAP/DISH Web サービスが実行されている SQL Anywhere Web サーバが設定されました。

次の手順

次のレッスンでは、Web サーバと通信するための Java アプリケーションを作成します。レッスン 2:Web サーバと通信するための Java アプリケーションの作成に進みます。

 参照