CXF之WSDL
WSDL 是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似 远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服 务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。
WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用:消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。因此,WSDL 文档在Web服务的定义中使用下列元素:
l Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
l Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
l Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
l PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
l Binding - 特定端口类型的具体协议和数据格式规范的绑定。
l Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
l Service - 相关服务访问点的集合。
ü WSDL描述
<!--这里的name是发布的service类名 + "Service", targetNamespace 是取决于发布类所在的包 -->
<wsdl:definitions name="HelloService" targetNamespace="http://service/">
<!--types 的作用是定义输入输出参数都是什么样子的(类型) -->
<wsdl:types>
<!-- targetNamespace 是取决于发布类所在的包 -->
<xs:schema elementFormDefault="unqualified" targetNamespace=http://service/ version="1.0">
<!--输入参数名字为‘sayHello’,类型是复杂类型‘sayHello’,在下面定义 -->
<xs:element name="sayHello" type="tns:sayHello"/>
<!--输出参数名字为‘sayHelloResponse’,类型是复杂型sayHelloResponse, 在下面定义-->
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<xs:element name="user" type="tns:user"/>
<!--输入参数类型的具体定义:包含一个element,名字为arg0,类型为user-->
<xs:complexType name="sayHello">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:user"/>
</xs:sequence>
</xs:complexType>
<!-- 这里的name 是自动生成的。当然,也可以在代码中指定名字。
Public @WebResult(name="sayHelloResult") User sayHello(@WebParam(name="name") User user)
-->
<xs:complexType name="user">
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="age" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="tns:user"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<!--这个message代表输入信息。这个输入信息的类型是sayHello,在<types>中定义过 -->
<wsdl:message name="sayHelloResponse">
<wsdl:part element="tns:sayHelloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<!--这个message代表输出信息。这个输出信息的类型是sayHelloResponse,在<types>中定义过 -->
<wsdl:message name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters">
</wsdl:part>
</wsdl:message>
<!--portType 就是我们定义的接口。一个接口对应一个port -->
<wsdl:portType name="Hello">
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello" name="sayHello"> </wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> </wsdl:output>
</wsdl:operation>
</wsdl:portType>
<!--把接口进行 soap 绑定-->
<wsdl:binding name="HelloServiceSoapBinding" type="tns:Hello">
<!-- 这里指明绑定的协议为 http,style为document-->
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sayHello">
<!-- 具体方法的绑定类型定义-->
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHello">
<!--literal文本 -->
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<!--literal文本 -->
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!--把n个接口放到一起,总称为一个service -->
<wsdl:service name="HelloService">
<!--这里一个port就是一个接口。对应的绑定刚刚定义过 -->
<wsdl:port binding="tns:HelloServiceSoapBinding" name="HelloPort">
<!--这个接口的地址 -->
<soap:address location="http://localhost:8080/testcxf/ws/hello"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
分享到:
相关推荐
CXF实现WebService详解实例
CXF使用EndpointImpl发布WebService加入拦截器
使用cxf 来实现的webservice,包括客户端代码是书写,wsdl文件的导出,和客户端代码的书写,有截图,关键地方有提示,完全是按照我实现时的步骤一步一步来的,和大家分享一下。
以注释的形式详细描述wsdl文件中的内容 type message portType bing service
cxf实现webservice详细文档 cxf调用.net webservice 技术详解
主要介绍了详解Spring boot+CXF开发WebService Demo,非常具有实用价值,需要的朋友可以参考下
主要给大家介绍了关于spring如何集成cxf实现webservice接口功能的相关资料,文中通过示例代码介绍的非常详细,对大家 的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
Google为ndroid平台开发Web Service提供了支持,提供了Ksoap2-android相关架包接下来介绍android调用web service(cxf),感兴趣的朋友可以了解下
主要为大家详细介绍了Spring整合CXF webservice restful的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
完整的代码详解,让您更快的上手 jar包代码都是测试过的客户端和服务端
Spring Web Services 是基于 Spring 框架的 Web 服务框架,主要侧重于基于文档驱动的Web服务,提供 SOAP 服务开发,允许通过多种方式创建 Web 服务。...5) 客户端创建暴露的webservice接口 6) 客户端调用webservice接口
05.WebService核心之WSDL深入详解
第5章 BroadcastReceiver (广播) 5.1 生命周期 5.2 广播类型 5.2.1 普通广播 5.2.2 有序广播 5.2.3 异步广播 5.3 系统广播应用 5.3.1 系统广播 5.3.2 开机启动程序 5.3.3 电量监测 5.4 本章小结 第6章 Service...
09.WebService核心技术之SOAP协议深入详解.
06.WSDL深入详解和WebService调用过程的底层本质
本人积累的所有webServer教程,相当全面,...- 爱琴海 - ITeye技术网站.htm XFire部署开发webservice.docx XFire建立Webservice实例.doc XFire开发WebService详解.doc 使用CXF开发WebService.doc cxf.chm 强力推荐。
JAVA如何调用wsdl过程详解java WSDL接口webService实现方式PHP调用wsdl文件类型的接口代码分享解析利用wsdl.exe生成webservice代理类的详解在PHP中利用wsdl创建标准webservice的实现代码Java调用CXF WebService接口...
Java作为可扩展的开发平台备受开发者青睐,在其上开发Web服务(以下简称Web Service)的方法犹如雨后春笋般层出不穷,...本文将以图文并茂的方式集中详解使用Axis2和CXF开发Web Service的方法及步骤,以供学习和交流。
包含内容:XFIRE篇、AXIS篇、XFIRE和AXIS的比较、CXF篇、服务安全性、JAVA环境下的AXIS与XFIRE性能测试