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

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

 

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

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

 ♦ RAW 要求を受信し RAW 応答を送信するデータベースサーバーの設定
  1. 次のコマンドを使用して SQL Anywhere demo データベースを起動します。

    dbsrv12 -xs http(port=8082) "%SQLANYSAMP12%\demo.db"

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

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

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

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



    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;

    これらの文は、結果セット出力の構造を定義する 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 ドキュメントのみです。EXPLICIT 句の詳細については、CREATE PROCEDURE 文 [Web サービス]を参照してください。

    DATATYPE ON は、明示的なデータ型情報が XML 結果セットの応答と入力パラメーターで生成されることを示します。このオプションは、生成される WSDL ドキュメントに影響しません。DATATYPE 句の詳細については、CREATE PROCEDURE 文 [Web サービス]を参照してください。

  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 の一部になります。

  6. Web ブラウザーでアクセスして、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 クライアントインターフェイスを生成します。

  7. (オプション) サンプルデータベース (demo.db) を元の状態にリストアします。サンプルデータベースの再作成 (demo.db) を参照してください。

 参照