在本课中,您将设置运行 SOAP 和 DISH Web 服务的 SQL Anywhere Web 服务器,处理 JAX-WS 客户端应用程序的请求。
使用以下命令启动 SQL Anywhere demo 数据库:
dbsrv12 -xs http(port=8082) samples-dir\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 的新过程,它定义输出结果集的结构,并从雇员表中选出某些列。
创建新的 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 Web 服务,称为 WS/EmployeeList,它生成 SOAP 类型作为输出。当 Web 客户端向服务发送请求时,它调用 ListEmployees 过程。
从 JAX-WS 访问的 SOAP Web 服务应该用 FORMAT 'CONCRETE' 子句来声明。EXPLICIT ON 子句表示相应的 DISH 服务应当生成 XML 模式,该模式基于 ListEmployees 过程的结果集描述一个显式 dataset 对象。EXPLICIT 子句只对生成的 WSDL 文档有影响。有关 EXPLICIT 子句的详细信息,请参见CREATE PROCEDURE 语句(Web 客户端)。
DATATYPE ON 表示显式数据类型信息在 XML 结果集响应和输入参数中生成。此选项不影响生成 WSDL 文档。有关 DATATYPE 子句的详细信息,请参见CREATE PROCEDURE 语句(Web 客户端)。
创建一个新 DISH 服务以充当 SOAP 服务的代理并生成 WSDL 文档。
在 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 服务是 GROUP WS 的一部分,因为它被声明为 WS/EmployeeList。
通过 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 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |