说明:本文意译自BPEL1.1规范16.2节。
本文讨论一个简单的贷款审批的WEB服务的例子。在该例子中,客户发送贷款审批请求,包括客户个人信
息和贷款金额。贷款审批的WEB服务利用该信息运行一个简单流程,得到“同意贷款”或“拒绝贷款”的
结果。对于低于10000美元的贷款和有良好信用的客户,审批是自动的。对于高额贷款和信用不确定的客
户,我们需要用到另外两个WEB服务提供的功能。“风险评估服务”用来查询某个个人的信用风险,“专
家评估服务”用来获得专家对该项目的具体评估意见。
1。服务描述
我们假定已经存在xmlns:lns="http://loans.org/wsdl/loan-approval",服务描述文件如下:
<definitions
targetNamespace="http://loans.org/wsdl/loan-approval"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:lns="http://loans.org/wsdl/loan-approval">
H:信用信息消息。消息相当于我们的值对象。
<message name="creditInformationMessage">
<part name="firstName" type="xsd:string"/>
<part name="name" type="xsd:string"/>
<part name="amount" type="xsd:integer"/>
</message>
H:审批消息
<message name="approvalMessage">
<part name="accept" type="xsd:string"/>
</message>
H:风险评估消息
<message name="riskAssessmentMessage">
<part name="level" type="xsd:string"/>
</message>
H:错误消息
<message name="errorMessage">
<part name="errorCode" type="xsd:integer"/>
</message>
H:把portType理解为我们的OO中的方法吧!它指定了输入,输出,出错处理。
<portType name="loanServicePT">
<operation name="request">
<input message="lns:creditInformationMessage"/>
<output message="lns:approvalMessage"/>
<fault name="unableToHandleRequest"
message="lns:errorMessage"/>
</operation>
</portType>
<portType name="riskAssessmentPT">
<operation name="check">
<input message="lns:creditInformationMessage"/>
<output message="lns:riskAssessmentMessage"/>
<fault name="loanProcessFault"
message="lns:errorMessage"/>
</operation>
</portType>
<portType name="loanApprovalPT">
<operation name="approve">
<input message="lns:creditInformationMessage"/>
<output message="lns:approvalMessage"/>
<fault name="loanProcessFault"
message="lns:errorMessage"/>
</operation>
</portType>
H:partnerLinkType用来区分角色。
<plnk:partnerLinkType name="loanPartnerLinkType">
<plnk:role name="loanService">
<plnk:portType name="lns:loanServicePT"/>
</plnk:role>
</plnk:partnerLinkType>
<plnk:partnerLinkType name="loanApprovalLinkType">
<plnk:role name="approver">
<plnk:portType name="lns:loanApprovalPT"/>
</plnk:role>
</plnk:partnerLinkType>
<plnk:partnerLinkType name="riskAssessmentLinkType">
<plnk:role name="assessor">
<plnk:portType name="lns:riskAssessmentPT"/>
</plnk:role>
</plnk:partnerLinkType>
</definitions>
我们以上面的案例来说明.
1)声明名称空间
必须在 <definitions> 元素中提供各种名称空间的声明.
<definitions
targetNamespace="http://loans.org/wsdl/loan-approval"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:lns="http://loans.org/wsdl/loan-approval">
三个必须做的外部名称空间声明是 WSDL、SOAP 和 XSD(XML 模式定义)
xmlns="http://schemas.xmlsoap.org/wsdl/"是WSDL名称空间
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 是SOAP名称空间,这里因为是用做BPEL4WS,所以
不需要该名称空间
xmlns:xsd="http://www.w3.org/2001/XMLSchema"是XSD名称空间
2)编写服务
<definitions> 元素包含一个或多个 <portType> 元素,实际上,每个元素都是您希望表示的一系列
operation。或者,您也可以将单个 portType 元素看作是将各种方法组成类的一个逻辑分组。我们称
portType为服务---这就是"WEB服务"这个名称的由来.
<portType name="loanServicePT">
<operation name="request">
<input message="lns:creditInformationMessage"/>
<output message="lns:approvalMessage"/>
<fault name="unableToHandleRequest"
message="lns:errorMessage"/>
</operation>
</portType>
可以看出,portType是operation的集合.一个operation是一个方法,那一个portType不就是一个类吗?一个
类,我们可以看作一个服务.
3)指定参数
operation指定了输入的参数和输出的参数,在 WSDL 术语中,所有参数称为“消息”。
<message name="creditInformationMessage">
<part name="firstName" type="xsd:string"/>
<part name="name" type="xsd:string"/>
<part name="amount" type="xsd:integer"/>
</message>
一个消息可以有多个part元素,part元素指定名称和类型.
4)与SOAP绑定
WSDL以一种抽象方式定义了操作和消息,而不考虑实现的细节。实际上,WSDL 的任务是定义或描述 Web
服务,然后提供一个对外部框架的引用来定义 WSDL 用户将如何实现这些服务。可以将这个框架当作
WSDL 抽象定义和它们的实现之间的“绑定(binding)”。一般是与SOAP绑定,当然,也不是必须的.
5)指定实现
当您在 UDDI 注册中心发布 Web 服务时,会使用它.
最后两个步骤把WSDL与SOAP/UDDI结合起来了.
相关推荐
本项目“WSDL.rar”提供了一个C#编写的WSDL解析器,旨在帮助开发者更好地理解和操作WSDL文件。 首先,WSDL是一种XML文档,它详细描述了Web服务的接口,包括服务提供的操作、输入和输出消息的结构以及服务的位置。在...
1. 在导入后的集合中,你可以看到由WSDL生成的请求列表,每个请求代表了一个Web Service的操作。 2. 选择你需要测试的操作,点击进入详情页面。 3. 在请求方法下拉菜单中,通常会预设为SOAP请求类型。 4. 查看WSDL中...
在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...
使用WSDL2Objc工具的具体步骤一般包括以下几个阶段: 1. 下载:首先从其官方网站或其他可靠的源下载WSDL2Objc工具的代码包。 2. 安装:解压缩文件,根据提供的安装指南或README文件,可能需要编译或配置环境。 3. ...
这样,开发者无需手动编写调用Web服务的Java代码,只需导入WSDL文件,MyEclipse就能自动生成相应的Java客户端 stub类,这些类提供了与Web服务交互的方法。 具体步骤如下: 1. 打开MyEclipse,创建一个新的Web项目...
8. **开发流程**:使用这样的工具通常包括以下几个步骤:定义服务接口(包括操作、输入/输出消息)、配置通信协议和绑定、设置服务地址和端点,然后使用工具生成对应的WSDL文件。 9. **调试与测试**:生成WSDL后,...
编写 WSDL 的过程可以分为以下几个步骤: ##### 步骤1:定义服务接口 - **确定服务操作**:明确服务提供的具体操作,如 `getListOfModels()` 和 `getPrice(modelNumber)`。 - **定义数据类型**:对于每个操作,...
总结来说,"wsdl生成服务的客户端调用代码"涉及到利用WSDL文件自动生成与Web服务交互所需的客户端代码,这样开发者就可以在自己的应用中方便地调用这些服务,而无需手动编写复杂的网络通信逻辑。不同的编程语言和...
总结,配置SOAP服务器和生成WSDL文件涉及多个步骤,包括定义服务、创建WSDL、编写批处理命令以及管理依赖库。理解这些步骤可以帮助开发者更有效地构建和维护Web服务,提高开发效率。通过使用合适的工具和命令,可以...
通过这个工具,开发人员无需手动编写复杂的SOAP消息处理代码,大大提高了开发效率。 首先,让我们详细了解`wsdl2Java`工具的使用步骤: 1. **安装Apache Axis**: 首先,你需要在你的开发环境中安装Apache Axis。这...
Axis2提供了一个工具,可以自动生成WSDL文件,这样开发者就不需要手动编写复杂的XML描述。 3. **Axis2简介** Axis2是Apache软件基金会开发的Web服务引擎,它是Axis1.x的升级版,设计得更轻量级、更模块化。Axis2...
3. 创建WSDL:JAX-WS会自动生成WSDL文件,或者开发者可以手动编写并配置。 4. 部署服务:将服务打包成WAR或EAR文件,部署到应用服务器(如Tomcat、JBoss等)。 **Java WSDL客户端**: 为了消费WSDL服务,Java客户端...
五、WSDL客户端生成的常见问题 1. WSDL不完整或错误:如果WSDL文件有误,可能会导致生成的客户端代码无法正常工作,需要检查并修正WSDL。 2. 名称冲突:当WSDL中存在相同名称但不同意义的元素时,可能需要手动调整...
**步骤五:实现方法功能** 在完成了上述步骤之后,最后一步是实现`plus`方法的功能。这通常涉及编写具体的业务逻辑代码,以实现两个浮点数相加的功能。例如: ```java public float plus(float x, float y) { ...
为了更好地利用这个压缩包,你需要了解以下关键步骤: 1. **解压文件**:首先,解压"wsdl_2.6.1.zip",这将得到ONVIF WSDL文件的完整集合。 2. **熟悉ONVIF规范**:阅读ONVIF的相关文档,理解其服务模型和WSDL文件...
**使用Wsdl2Java步骤** 1. 安装并配置Apache Axis环境,确保所有依赖库已添加到类路径。 2. 运行Wsdl2Java工具,提供WSDL文件的URL或本地路径。 3. 工具会生成对应的Java源代码,包括客户端的Stub类和数据绑定类。 ...
通过这个工具,开发者可以避免手动编写繁琐的SOAP请求和解析响应的过程,从而提高开发效率和代码的可维护性。 使用`wsdl2php`时,你需要提供一个有效的WSDL文件,这个文件通常由Web服务提供商提供,包含了服务的...
WSDL2Java是一个工具,主要用于将Web服务描述语言(WSDL)文件转换为Java源代码。这个过程称为“代码生成”,它使得开发人员能够轻松地与远程Web服务进行交互,而无需手动编写复杂的网络调用代码。WSDL是XML格式的...
### 使用WSDL的步骤 1. **创建WSDL**:根据服务需求,编写描述服务接口和消息的WSDL文档。 2. **生成Java类**:使用JAX-WS工具从WSDL生成Java服务接口和服务实现类。 3. **实现服务**:在生成的服务实现类中编写...