概括
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
1)跨编程语言:服务端采用Java编写,客户端可以用其他语言,反之同理
2)跨操作系统平台:服务端程序和客户端程序可以在不同操作系统平台运行
3)远程调用:计算机a可以调用另一台计算机b上的一个对象的方法
从表面上看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
主要概念
WSDL:WebService描述语言,基于XML的语言,描述WebService及其参数、函数、返回值
UDDI:统一描述、发现、整合规范。注册和查找服务
SEI:WebService服务端处理请求的接口
SOAP:简单对象访问协议。是一个XML文档,有请求消息和响应消息
框架
Jws:Java语言对WebService服务的一种实现,用来开发和发布服务
Axis:Apache底下的,WebService集大成者,不仅可以用来开发和发布服务,还能生成Java和其他语言版WebService客户端和服务端的代码。但是依赖的包太多太多,打包部署比较麻烦
XFire:开发方便,与Web融为一体,但是对Java之外的语言没有提供相关开发工具
CXF:Struts2来自于WebWork,CXF来自于XFire
服务端开发
1)使用@WebService表明这是一个WebService服务
2)Endpoint.publish(“url”,new a())发布服务
3)浏览器中输入url+?wsdl返回xml文档即为成功
客户端开发
1、选择生成代码的项目src下的位置
2、在安装jdk的bin目录下,有一个wsimport命令,可以根据wsdl文档生成客户端调用的代码,使用方式:
打开cmd窗口
1)在项目的src路径下
wsimport -s . http://127.0.0.1:11111/weather?wsdl
2)不在项目的src路径下
wsimport -s “src目录” -p “生成类所在包名” -keep “wsdl发布地址”
wsimport -s D:\Wordspace\webservice\src -p main.com.client -keep http://172.11.1.111:8080/?wsdl
成功执行后在项目刷新即可看到生成的代码,实现WebService服务端的接口服务,实现方式:
- 创建服务视图对象,带service结尾的类
- 通过服务视图获得porttype(SEI)对象
- 调用服务端的方法
- 输出结果
JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
String name=hello.getValue("传参,调用方法");
System.out.println(name);
参考自:https://blog.csdn.net/qq_33326449/article/details/52973297