在接下来的几篇博客中将对CXF的基础知识和简单应用进行总结。下面列出了要总结的内容。本篇文章集中介绍CXF的基础知识。
CXF博客总结目录
WebService和CXF基础知识
CXF入门实例(编写客户端和服务端)
CXF对Map等无法自动转化的类型的处理
CXF添加普通拦截器
CXF添加自定义拦截器
CXF+Spring+自定义拦截器构建WebService服务端
CXF+Spring+Struts+自定义拦截器构建WebService客户端
利用CXF编写Restful风格的Web Service
概述
核心技术
WSDL
WSDL是WebService描述语言
现在,通过我本地发布的WebService生成的WSDL文档来了解一下它。
一个是接口文档,一个是实现文档。
接口文档
http://localhost:9009/HelloWorldWS?wsdl=HelloWorld.wsdl
type:定义了文档采用哪种约束、格式,如Shema
message:传递的消息,每个operation的传入消息和传出消息(**Response),所以有N个Operation,就有2N个message
portType:其中用operation定义了WebService操作(方法)
实现文档
http://localhost:9009/HelloWorldWS?wsdl
binding:接口文档中的portType中的每个Operation绑定实现。
service:定义了绑定的端口和地址
SOAP
简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。
——百度百科
下面是一条SOAP消息
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<authHeader>
<userId>1</userId>
<pwd>123</pwd>
</authHeader>
</soap:Header>
<soap:Body>
<ns2:getAllCats xmlns:ns2="http://ws.tgb.com/"/>
</soap:Body>
</soap:Envelope>
总之,WSDL描述了三方面内容:
What:该WebService包含哪些操作?
How:这些操作应该怎样调用——SOAP消息机制
Where:Web Service的地址
调用WebService过程
1.Client将方法参数–》SOAP的input消息(XML文档形式)
2.通过网络传递input消息
3.Server接收,并解析,将input消息–》参数
4.Server执行方法
5.将返回值–》SOAP的output消息
6.网络传输
7.客户端接收,解析,将output消息–》返回值
总结
之前学习了中间件,EJB,这里又回顾了WebService,学习了CXF框架。WebService采用的SOAP协议并结合Http,数据传输基于XML,而EJB是通过将对象序列化成二进制串传递的。更详细的它们的区别和联系,请参考再论corba,ejb ,webservice,rest分布式 。