このレッスンでは、JAX-WS クライアントアプリケーションの要求を処理する SOAP/DISH Web サービスが実行されている SQL Anywhere Web サーバーを設定します。
次のコマンドを使用して SQL Anywhere demo データベースを起動します。
dbsrv12 -xs http(port=8082) "%SQLANYSAMP12%\demo.db" |
このコマンドは、HTTP Web サーバーがポート 8082 で要求を受信することを指定します。ネットワークで 8082 が許可されない場合は、異なるポート番号を使用します。
次のコマンドを使用して Interactive SQL でデータベースサーバーに接続します。
dbisql -c "UID=DBA;PWD=sql;SERVER=demo" |
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 テーブルから特定のカラムを選択します。
着信要求を受け入れる新しい 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 サービス]を参照してください。
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 の一部になります。
Web ブラウザーでアクセスして、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 クライアントインターフェイスを生成します。
(オプション) サンプルデータベース (demo.db) を元の状態にリストアします。サンプルデータベースの再作成 (demo.db) を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |