webService之CXF框架(2)

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);
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_37598682/article/details/80602473
今日推荐