快速业务通道

用JAX-RPC构建RPC服务和客户机:使用Java API构建基于RPC的Web服务(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
inOccurs="0"         name="item" type="xsd:anyType"/>    </sequence>    </complexType>   </schema>   <schema targetNamespace="http://localhost:8080/axis/BookSearcher.jws"       xmlns="http://www.w3.org/2001/XMLSchema">    <import namespace="http://xml.apache.org/xml-soap"/>    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>    <complexType name="ArrayOf_xsd_anyType">    <complexContent>     <restriction base="soapenc:Array">     <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/>     </restriction>    </complexContent>    </complexType>   </schema> </wsdl:types>

用JAX-RPC构建RPC服务和客户机:使用Java API构建基于RPC的Web服务(一)(17)

时间:2011-08-02 IBM Brett McLaughlin

WSDL 和 Web 服务了解一些基本类型,比如 string、int 和 float,但是不了解比 Java 基本数据类 型更复杂的类型。但是,BookSearcher 类的一些方法能够接受或返回列表和映射。为了处理这些基于对 象的复杂类型,WSDL 必须通过 XML Schema 类型定义它们。文档的这个部分定义所有这些类型。例如, 清单 13 给出一个映射的定义,使 RPC 客户机和服务可以理解这个映射:

清单 13. 定义 RPC 客户机和服务可以理解的一个映射

<complexType name="mapItem">    <sequence>     <element name="key" nillable="true" type="xsd:anyType"/>     <element name="value" nillable="true" type="xsd:anyType"/>    </sequence>    </complexType>    <complexType name="Map">    <sequence>     <element maxOccurs="unbounded" minOccurs="0"         name="item" type="apachesoap:mapItem"/>    </sequence> </complexType>

Vector 类型以同样的方式代表列表,提供了列表的上限和下限。这对使用 WSDL 造成了一定的困难, 因为只有在编写了一些服务和客户机之后,才会逐渐熟悉 Java 对象和定制 WSDL 类型之间的基本映射。 尽管如此,如果看到一个方法以 Vector 作为参数,那么只需在 <wsdl:types> 元素中寻找关于这 个类型的信息,包括对其中的值的约束。

每次发送和返回的都是消息

下一个元素由 <wsdl:message> 表示。这里有一些源自 Java 的概念,它们主要关注与网络和 SOAP 相关的问题。在向服务中的方法发送请求时,实际上是发送一个消息。如果请求的方法没有参数, 消息就不包含方法所操作的任何数据。如果方法需要参数数据,就必须在消息中发送数据。

服务从方法返回时也是如此:返回的消息可以包含来自方法的数据,也可以没有数据。但是,关键在 于发送和接收的是单独的 消息。一个消息从客户机发送到服务,另一个消息从服务返回到客户机。这两 个消息在逻辑上相关,但是在编程或技术范畴上没有联系。

因此,必须声明和定义这些消息。以 BookSearcher 的 getKeywords() 方法为例。它接收一个字符串 标题参数,返回一个列表。必须在 WSDL 中声明这两个消息:

清单 14. WSDL 中的消息声明

<wsdl:message name="getKeywor

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号