最近学习了WebService,于是写一篇总结,供自己以后复习,如有错误,欢迎指出..
简单来说,WebService就是一种跨编程语言和跨操作系统平台的远程调用技术,跨编程语言意思是服务端程序和客户端程序编写用到的语言可以不一样,跨操作平台就是说服务端程序和客户端程序可以在不同的操作系统上运行。服务端通过webservice 将接口暴露在外面,客户端则通过webservice调用服务端的服务。发布WebService服务的两种方式:
1.使用jdk自带工具发布首先先创建要发布的功能接口,并创建它的实现类,然后在实现类上面加上 @WebService注解。
发布服务
2.使用cxf框架发布服务
和上面一样,首先也是先创建接口和实现类,不同的是,@WebService注解要写在接口上,还可以使用注解设置SOAP的版本(上面忘了提到)。
发布服务(地址由自己设置)
最后输入“ http://127.0.0.1:2333/weather?wsdl ”,出现以下页面则发布成功
注意:在工具中重新发布服务,需要把上一个服务给关掉,否则会报错
生成WebService客户端代码的两种方式:
1.使用jdk自带命令生成打开cmd,跳转到要生成代码的项目的src下,使用 wsimport命令通过发布服务的wsdl地址生成客户端代码。( 因为wsimport是jdk的内部命令所以要先配好jdk的环境变量哟)
-p <包名> 指定目标程序包名
-d <目录> 指定放置生成的输出文件(class文件)的位置(默认)
-s <目录> 指定放置生成的源文件的位置
./ 当前目录
生成的客户端代码的使用
2.使用cxf框架命令生成
步骤和上面差不多(记得配置cxf环境变量,否则找不到命令)。注意jdk1.8的用户使用此命令会报错,有两种解决方案,一是更换jdk的版本,因为这个错误是jdk1.8的一个BUG造成的,所以换成1.7就不会报错了,如果不想换的话,可以使用第二方案:在jdk安装目录下的jre目录里面的lib文件夹里创建 jaxp.properties 文件,并在这个属性文件里输入 javax.xml.accessExternalSchema = all ,保存,大功告成。
客户端代码的使用
先写到这里,后续再补充