WebService
它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术.
面向服务架构
规范及三要素
1) SOAP协议:webservice的传输协议,即简单对象访问协议.SOAP协议是xml格式,可以理解为基于http传输xml数据.soap=html+xml
特点:跨平台 跨语言 W3C标准
各种开发语言都是按照相同的表中实现webservice的开发
2) WSDL:webservice说明书
WSDL指网络服务描述语言(Web serviceDescription languge),是一种使用XML编写的文档,用于描述网络服务,也可用于定位网络服务
根据WSDL区调用webservice.从下往上读,找到service服务视图,通过binding找到portType(服务类)
3) UDDI:统一描述、发现和继承协议;是一个目录服务,存储了全球的webservice地址。
Java共有三种webService规范:JAX-WS(JAX-RPC), JAXM&SAAJ, JAX-RS
Cxf框架
使用:
Service
1) 导包
2) 创建个接口在要发布到webservice的方法上加@WebService注解
3) 发布:
//jaxws规范的服务工厂bean
JaxWsServerFactoryBean bean = newJaxWsServerFactoryBean();
//设置发布地址
bean.setAddress("http://localhost:12345/weather[a1] ");
//设置服务类
bean.setServiceBean(new CXFServiceImpl()[a2] );
//发布
bean.create();
客户端
1) 导包
2) Wsimport 生成本地代码;
Wsimport java提供的在JDK安装目录的bin目录下
在命令行窗口中运行:
Wsimport –s . http://localhost:12345/weather?wsdl[a3]
3) 使用webService发布的方法
//创建代理工厂
JaxWsProxyFactoryBean factory = newJaxWsProxyFactoryBean();
//设置远程服务的地址
factory.setAddress("http://localhost:12345/weather?wsdl");
//设置portType的class
factory.setServiceClass(CXFService[a4] .class);
//读取portType
CXFService create = (CXFService[a5] ) factory.create();
//调用远程方法
String str = create.csfTest("北京");
System.out.println(str);