1. 目的java
基本流程如图
对于商业用户来讲,要找到一个本身须要使用的服务,他必须知道如何来调用。
WSDL (Web Services Description Language) 规范是一个描述接口,语义以及Web服务为了响应请求须要常常处理的工做的XML文档。这将使简单地服务方便,快速地被描述和记录。
|
WSDL文档能够分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,大相径庭的网站均可以实现。随网站而异的东西如序列化便纳入底部分,由于它包含具体的定义。
l.
抽象定义
Types 独立与机器和语言的类型定义 Messages 包括函数参数(输入与输出分开)或文档描述 PortTypes 引用消息部分中消息定义来描述函数签名(操做名、输入参数、输出参数) 2. 具体定义 Bindings PortTypes部分的每一操做在此绑定实现 Services 肯定每一绑定的端口地址
各Messages栏使用Types栏的定义,PortTypes栏使用Messages栏的定义;Bindings栏引用了PortTypes栏,Services栏引用Bindings栏,PortTypes和Bindings栏包含了operation元素,而Services栏包含了port元素。PortTypes栏里的operation元素由Bindings栏里的operation元素进一步修改或描述。
注意:文档之中可能只有一个Types栏,或根本没有。全部其余的栏能够只有零元素、单元素或是多元素。WSDL的列表要求全部的栏以固定的顺序出现:import, types, message, portType, binding, service。全部的抽象能够是单独存在于别的文件中,也能够从主文档中导入。
第一行申明该文档是XML。尽管这并非必需的,但它有助于XML解析器决定是否解析WSDL文件或只是报错。
第二行是WSDL文档的根元素:<definitions>。一些属性附属于根元素,就像<schema>子元素对于<types>元素。
<types>元素包含了Types栏。若是没有须要声明的数据类型,这栏能够缺省。在WSDL范例中,没有应用程序特定的types声明,但我仍然使用了Types栏,只是为了声明schema namespaces。
<message>元素包含了Messages栏。若是咱们把操做看做函数,<message>元素定义了那个函数的参数。<message>元素中的每一个<part>子元素都和某个参数相符。输入参数在<message>元素中定义,与输出参数相隔离--输出参数有本身的<message>元素。兼做输入、输出的参数在输入输出的<message>元素中有它们相应的<part>元素。输出<message>元素以"Response"结尾,就像之前所用的"fooResponse"。每一个<part>元素都有名字和类型属性,就像函数的参数有参数名和参数类型。
一个PortTypes栏中,能够有零个、单个或多个<portType>元素。因为抽象PortType定义能够放置在分开的文件中,在某个WSDL文件中没有<portType>元素是可能的。上面的例子里只是用了一个<portType>元素。而一个<portType>元素可在<operation>元素中定义一个或是多个操做。示例仅使用了一个名为"foo"的<operation>元素。这和某个函数名相同。<operation>元素能够有一个、两个、三个子元素:<input>, <output> 和<fault>元素。每一个<input>和<output>元素中的消息都引用Message栏中的相关的<message>元素。
Bindings栏能够有零个、一个或者多个<binding>元素。它的意图是制定每一个<operation>经过网络调用和回应。Services栏一样能够有零个、一个、多个<service>元素。它还包含了<port>元素,每一个<port>元素引用一个Bindings栏里的<binding>元素。Bindings和Services栏都包含WSDL文档。
|
package com.smt.service;
/******************************************************
*
* 功能描述: WebService Xfire 对象提供服务接口类</br></br>
*
* 做者: chenab </br></br>
*
* 建立时间: 2011-7-14 上午11:22:26</br></br>
*
* 版本号:V1.0 </br></br>
*****************************************************/
public
interface IBankingService {
public String transferFunds(String fromAccount);
}
|
package com.smt.service;
/*****************************************************
*
* 功能描述: webService XFire 服务接口实现类</br></br>
*
* 做者: chenab</br></br>
*
* 建立时间: 2011-7-14 上午11:28:47</br></br>
*
* 版本号:V1.0 </br></br>
*******************************************************/
public
class BankingService
implements IBankingService {
public BankingService() {
}// 空构造不可少
public String transferFunds(String fromAccount) {
String str=" 恭喜, 服务端测试成功! "+fromAccount;
System.
out.println(str);
return str;
}
}
|