在本课中,您将设置运行 SOAP 和 DISH Web 服务的 SQL Anywhere Web 服务器,处理 JAX-WS 客户端应用程序的请求。
使用以下命令启动 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 的新过程,它定义结果集输出的结构,并从雇员表中选出某些列。
创建新的 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(); |
此语句创建名为 WS/EmployeeList 的新 SOAP Web 服务,此服务生成 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讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |