1.概观
开发手段:使用JDK开发(1.6及以上版本)使用CXF框架开发(工作中)
组成:服务器端客户端
2.利用JDK开发WebService
1).开发服务器端
Web Service编码:@WebService( SEI和SEI的实现类)@WebMethod(SEI中的所有方法)
发布Web Service:Endpoint(终端, 发布webservice)
2).开发客户端
使用eclipse提供的web service浏览器访问查看对应的wsdl文档:…..?wsdl(一般浏览器)请求webService并查看请求和响应消息(webservice浏览器)
创建客户端应用编码方式访问借助jdk的exe工具生成客户端代码:
WSImport-keep URL//URL是wsdl文件的路径
借助生成的代码编写请求代码
3.监控请求:使用Eclipse的TCP/IP工具。
将服务器端的WSDL文档保存到客户端本地修改文档: 将端口号从8989改为8080根据本地的wsdl文档生成客户端代码, 并编写客户端的调用代码配置eclipse的TCP/IP,启动**
5.执行客户端代码以发送WebService请求
4.打电话给免费的网络服务(天气预报)
Google”免费WebService”, 找到提供天气预报Webservice的网络地址http://webservice.webxml.com.cn/WebServices/WeatherWS.a***x
使用eclipse的web service浏览器访问
客户端编码方式访问借助命令工具自动生成客户端代码借助生成的代码编写请求代码
说明: 直接生成客户端代码会抛异常, 无法生成客户端代码, 解决办法:1. 将对应的wsdl文档保存到本地2. 修改wsdl文档的部分内容:
将
<s:element ref=”s:sche***” /><s:any /> 替换成 <s:any minOccurs=”2″ ***xOccurs=”2″/>备注: 这个是Java调用net的webservice都有的问题
5.用CXF开发web服务
只需添加cxf的jar包,其他都不需要改动。
6.web服务请求的深入分析
1)分析WebService的WSDL文档结构。
1.1).示例截图
1.2).文档结构
<definitions>
<types>
<sche***>
<element>
</types>
<message>
<part>
</message>
<portType>
<operation>
<input>
<output>
</portType>
<binding>
<operation>
<input>
<output>
</binding>
<service>
<port>
<address>
</service>
</definitions>
1.3).文件结构图
types——数据类型(标签)定义的容器,使用sche***为消息定义一些标签结构,以引用消息数据结构的抽象类型定义——通信消息。请参考类型中定义的标签操作–服务中支持的操作的抽象描述。操作描述了访问门户的请求消息和响应消息对。PortType–对于接入点类型支持的操作的抽象***,这些操作可以由一个或多个服务接入点支持。绑定–特定端口类型的特定协议和数据格式规范的绑定。服务–相关服务访问点的***端口–被定义为单个服务访问点,它是协议/数据格式绑定和特定Web访问地址的组合。2).测试CXF支持的数据类型
int、float、boolean等类型。
引用类型字符串***:数字1组,列表,***,映射自定义类型学生
3).Web服务请求的过程
web服务请求的本质是:
1)浏览器向服务器发送soap消息(http请求+xml片段)。
2)服务器处理请求后,向客户端返回一条soap消息。
那么它的流程是怎样的呢?
7.CXF框架的深入使用
1)。CXF截击机
1.1)理解
为什么要设计***?为了在webservice请求过程中动态操纵请求和响应数据,CXF设计了一个***。
***分类:按所处的位置分:服务器端***,客户端***按消息的方向分:入***,出***按定义者分:系统***,自定义******API
***(***接口)
AbstractPhaseInterceptor(自定义***从这里继承而来)
LoggingInInterceptor(系统登录***类)
LoggingOutInterceptor(系统注销***类)
1.2)编写***的代码。
使用日志***,实现日志记录LoggingInInterceptorLoggingOutInterceptor使用自定义***,实现用户名与密码的检验服务器端的in***客户端的out***xfzhang/123456
2).用CXF编写基于spring的web服务
2.1).编码实现
服务器创建spring的配置文件xml,其中用xml配置SEI,配置CXF的一些核心组件。
客户端生成客户端代码,创建客户端的spring配置文件beans-client.xml,配置并编写测试类来请求web服务。
2.2).添加自定义***
Server端在xml中,在endpoint中配置上入***Client端通过Client对象设置出***
8.调用WebService的其他方法
1).Ajax调用webService
跨域请求问题:
1. 什么是跨域请求?
1. sina.com–=->baidu.com/xxx.jsp2. localhost—-à192.168.42.165
2. 解决ajax跨域请求webservice的问题?
在客户端应用中使用java编码去请求webservice, 在页面中去请求自己的后台
2).Jquery调用web服务
3).HttpPurlConnection调用web服务
9.通过注释修改wsdl文档
1).JDK的相关评论
1.1).@WebService
l 作用在具体类上。而不是接口。l 一个类只有添加了此注解才可以通过Endpoint发布为一个web服务。l 一个添加了此注解的类,必须要至少包含一个实例方法。静态方法和final方法不能被发布为服务方法。l WebService注解包含以下参数:
1.2).@方法
l 此注解用在方法上,用于修改对外暴露的方法。
1.3).@WebResult
用于定制返回值到WSDL的映射
1.4).@WebParam
用于定义WSDL中的参数映射
1.5).@XmlElement
用于定义实体类的属性到WSDL中的映射(get/set方法上)
2). 说明2)描述
即使是没有修改源代码,只修改了注解,客户端的代码也必须要重新生成, 否则调用将会失败。本文来自柠檬琉璃夏投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/480656.html