このレッスンでは、JAX-WS クライアントアプリケーションの要求を処理する SOAP/DISH Web サービスが実行されている SQL Anywhere Web サーバを設定します。
前提条件
このレッスンでは、このチュートリアルの開始時に、権限のセクションで一覧されているロールと権限を持っていることを前提としています。 チュートリアル:JAX-WS を使用した SOAP/DISH Web サービスへのアクセス
内容と備考
このレッスンでは、次のレッスンで使用する Web サーバと単純な Web サービスを設定します。プロキシソフトウェアを使用して XML メッセージトラフィックを確認します。プロキシは、クライアントアプリケーションと Web サーバの間に挿入されます。
次のコマンドを使用して SQL Anywhere デモデータベースを起動します。
dbsrv16 -xs http(port=8082) "%SQLANYSAMP16%\demo.db" |
このコマンドは、HTTP Web サーバがポート 8082 で要求を受信することを指定します。ネットワークで 8082 が許可されない場合は、異なるポート番号を使用します。
次のコマンドを使用して Interactive SQL でデータベースサーバに接続します。
dbisql -c "UID=DBA;PWD=sql;SERVER=demo" |
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 テーブルから特定のカラムを選択します。
着信要求を受け入れる新しい 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 を変更する必要があります。
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 を変更する必要があります。
Web ブラウザで関連 WSDL ドキュメントにアクセスして、DISH Web サービスが機能していることを確認します。
Web ブラウザを開き、 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 クライアントインタフェースを生成します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |