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 服务器

在本课中,您将设置运行 SOAP 和 DISH Web 服务的 SQL Anywhere Web 服务器,处理 JAX-WS 客户端应用程序的请求。

 ♦ 设置用于接收 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 的新过程,它定义结果集输出的结构,并从雇员表中选出某些列。

  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();

    此语句创建名为 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 服务]

  5. 创建一个新 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

  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>

    EmployeeListDatasetEmployeeList SOAP 服务中的 FORMAT 'CONCRETE' 和 EXPLICIT ON 子句生成的显式对象。在随后的课程中,wsimport 应用程序将使用此信息为该服务生成一个 SOAP 1.1 客户端接口。

  7. (可选)将示例数据库 (demo.db) 恢复至初始状态。请参见重新创建示例数据库 (demo.db)

 另请参见