CXF框架
1.什么是CXF
CXF,apache下的webservice的开源框架。
Apache CXF = Celtix + Xfire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。Apache CXF 是一个开源的 web Services 框架,CXF 帮助您构建和开发 web Services ,它支持多种协议,比如:SOAP1.1,1,2、XML/HTTP、REST HTTP 或者 CORBA。
灵活的部署:可以运行有Tomcat,Jboss,weblogic,Jetty(内置)上面。
2.SOA面向服务架构
3.CXF的使用前提
网址:http://cxf.apache.org,下载CXF
4.CXF的使用
4.1服务端的开发
指定sei接口和实现类,接口配置@WebService注解(注意:和原来的webService不同,原来的webService在实现类上配置注解),利用服务工厂类发布服务
import javax.jws.WebService;
//SEI接口
@WebService
public interface IWeatherService {
public String getWeather(String cityName);
}
//SEI实现类
public class WeatherServiceImpl implements IWeatherService{
@Override
public String getWeather(String cityName) {
return "下雨";
}
}
//利用工厂类发布服务
public class CxfServer {
public static void main(String[] args) {
//1.创建服务工厂类的对象,功能:帮助我们发布WebService服务
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
//2.指定webservice服务的访问地址(未来你可以通过什么地址访问我这个服务)
factory.setAddress("http://localhost:12345/weather");
//3.指定服务对象
factory.setServiceBean(new WeatherServiceImpl());
//4.指定接口类型
factory.setServiceClass(IWeatherService.class);
//发布服务
factory.create();
System.out.println("服务发布成功");
}
}
4.2 客户端的开发
1.使用命令生成桩,本地接口代理类(使用wsdl2java命令,不推荐使用wsimport)
wsdl2java用法:
wsdl2java -d . -p cn.paic.client.stub http://localhost:12345/weather?wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码到那个目录
2.通过本地代理工厂实例创建桩来调用服务
public class CxfClient {
public static void main(String[] args) {
//1.创建本地工厂实例
JaxWsProxyFactoryBean proxy = new JaxWsProxyFactoryBean();
//2.给本地工厂设置几个属性
//2.1 设置webService的服务地址(也可以是说明书wsdl地址http://localhost:12345/weather?wsdl)
proxy.setAddress("http://localhost:12345/weather");
//2.2 设置桩的类型
proxy.setServiceClass(IWeatherService.class);
//3.创建工厂并生产桩(本地工厂对象)
IWeatherService ws = (IWeatherService) proxy.create();
//第二种生产桩的方法:可以替代前面2个步骤
//IWeatherService ws = proxy.create(IWeatherService.class);
String weather = ws.getWeather("上海");
System.out.println(weather);
}
}