WebService
一 WS简介
ws是一种基于Http协议和XML技术,并使用WSDL描述和使用SOAP协议传输的异构系统解决方案
1.1Ws 直译网络服务,是RPC的一种实现方式
RPC–远程过程调用协议
Ws采用XML
1.2 使用场景
1.由权威机构提供的第三方小功能
权威机构能偶获取一些普通没法获取的数据,然后把它封装成ws服务端,普通使用就作为ws客户端掉用服务端。
2.多种客户端整合
大型应用公司为提高影响力,它会针对不同的平台提供不同的客户端。而客户端需要掉用获取数据,使用RPC,WS就是一种实现方式
3.异构系统整合
①异构系统可以简单理解为不同语言开发或不同架构多个系统
----异构系统中相互作为ws服务端和客户端?问题-侵入性太强
1.新增一个的时候其他系统都要改代码
2.一个系统改动ip后,其他也要改动
②soa:面向服务架构
wsdl:描述服务
uddi:发现服务
soap:调用服务协议
二 jdk ws实现
2.1 引入
ws只是思想,jdk有默认实现。而且第三方框架也有实现。
2.2 ws服务端
1.创建项目
2.创建本地服务接口和实现类
public class HelloServiceImpl {
public String sayHello(String name) {
return name+"hello";
}
}
3.把本地服务标记为远程服务
@WebService
@WebService//标记为远程服务
public class HelloServiceImpl {
@WebMethod//标记为远程服务的远程方法
public String sayHello(String name) {
return name+"hello";
}
}
4.发布服务-根据注解做一些事情
public static void main(String[] args){
//Endpoint是终端的意思
String address ="http://127.0.0.1:8010/hello";//发布地址
Object implementor=new HelloServiceImpl();//发布服务
Endpoint.publish(address,implementor);
System.out.println("服务发布成功!");
}
5.测试
http://127.0.0.1:8010/hello?wsdl
注意事项:
1.jdk1.8不能直接访问服务地址,要加上?wsdl
2.没有抱错,不展示内容,浏览器兼容性问题
3.localhost 127.0.0.1 局域网ip 只要有一个成功就ok
2.3wsdl简介
1.是什么
web service description language 网络服务描述语言。简单的理解就是用来描述服务
2.结构
definitions:根
name:服务名称,类型+service
targetNamespace:http://倒置导包
service:服务接口
<soap:address location=“http://127.0.0.1:8010/hello”/>服务在哪个地址被掉用
binding:
<soap:binding transport=“http://schemas.xmlsoap.org/soap/http” style=“document”/>
transport:以什么样的传输协议来调用
style=“document”:表示我们wsdl文件遵循什么格式 document/rpc
portType:接口类型
描述了有哪些接口方法
message:消息
描述接口方法的参数和返回值消息
types:描述消息的类型和名称-在doucement才有,而rpc没有
归纳:
接口实现归纳法
接口:portType,message,types
实现:service,binding
3W
where:service—什么地址
how:binding—什么方式
what:portType,message,types—什么方法
wsdl描述服务有哪些方法,以及在什么地址以什么样的方式能够被掉用
2.4 ws客户端
1.创建项目
2.通过wsdl地址生成本地接口
jdk的一个工具wsimport-jdk\bin,想在任意路径掉用,需要配置path
wsimport -d . http://127.0.0.1:8010/hello?wsdl
生成的是class文件
wsimport -s . http://127.0.0.1:8010