loading...
WebService基础概念(二)
Published in:2022-01-31 | category: WebService
Words: 581 | Reading time: 2min | reading:

WebService技术详解(二): CXF

CXF

CXF简介

CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫Apache CeltiXfire, 后来更名为Apache CXF 了,以下简称为CXF。CXF 继承了Celtix 和XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Tranesport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者WSDL优先(WSDL First)来轻松地实现Web Services 的发布和使用。

支持多种标准

  • 支持JAX-WS、JAX-WSA、JSR-181和SAAJ
  • 支持SOAP1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy
  • 支持WSDL1.1、2.0
  • 支持MTOM

它支持多种协议,比如:SOAP1.1,1.2、XML/HTTP、RESTful HTTP或者CORBA。CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c++,C#)

Cxf是基于SOA总线结构,依靠spring完成模块的集成,实现SOA方式。

灵活的部署:可以运行Tomcat,Jboss,Jetty(内置),Weblogic上面。

CXF入门案例

服务端实现

创建一个SEI接口,需要在接口上添加@WebService注解

1
2
3
4
5
6
7

@WebService
public interface WeatherInterface {

public String queryWeather(String cityName);
}

创建SEI接口实现类

1
2
3
4
5
6
7
8
9
10
public class WeatherInterfaceImpl implements WeatherInterface {

public String queryWeather(String cityName) {
if ("深圳".equals(cityName)) {
return "热得快炸了";
} else {
return "下冰雹";
}
}
}

发布服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class WeatherServer {
public static void main(String[] args) {
// 创建服务工厂的bean
JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
// 设置服务接口
jaxWsServerFactoryBean.setServiceClass(WeatherInterface.class);
// 设置服务实现类
jaxWsServerFactoryBean.setServiceBean(new WeatherInterfaceImpl());
// 设置服务地址
jaxWsServerFactoryBean.setAddress("http://127.0.0.1:23335/weather");
// 创建服务
jaxWsServerFactoryBean.create();
}
}

访问服务的wsdl文件地址,查看服务是否发布成功

http://localhost:23335/weather?wsdl

image-20211130174454100

客户端实现

Wsdl2java命令是CXF提供的生成客户端的工具,他和wsimport类似,可以根据WSDL生成客户端代码

Wsdl2java常用参数:

-d, 指定输出目录

-p, 指定包名,如果不指定该参数,默认包名是WSDL的命名空间的倒叙

wsdl2java支持SOAP1.1和SOAP1.2

1我们先创建一个客户端项目,然后引入jar包,和上面一样,是用Add JARS选择cxf-manifest.jar即可

然后使用工具生成客户端

wsdl2java -p com.cad.cxf -d . http://127.0.0.1:23335/weather?wsdl

Prev:
Docker容器的使用
Next:
WebService基础概念(一)
catalog
catalog