CXF入门教程(一)
CXF 简介
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。目前它仍只是 Apache 的一个孵化项目。
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。
入门实例
【环境配置】
下载apache-cxf-3.0.0版本
环境变量配置
CXF_HOME= D:\Program Files\apache-cxf-3.0.0
Path = %CXF_HOME%\bin;
CLASSPATH=%CXF_HOME%\lib\cxf-manifest.jar
【创建CXF工程流程】
第一步:使用Eclipse创建java工程(JDK版本为1.7)
第二步:将CXF中lib文件夹中所有jar包导入工程
第三步:创建服务接口和服务实现类
【服务端工程截图】
【IHelloWord.java】
package test.cxf.service;
import javax.jws.WebService;
@WebService
public interface IHelloWord {
public String say(String name);
}
【HelloWordImpl.java】
package test.cxf.service.impl;
import test.cxf.service.IHelloWord;
public class HelloWorldImpl implements IHelloWord {
@Override
public String say(String name) {
return "你好," + name;
}
}
【HelloServer.java】
package test.cxf.server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import test.cxf.service.IHelloWord;
import test.cxf.service.impl.HelloWorldImpl;
/**
* 服务端
* @author John
*
*/
public class HelloServer {
public static void main(String[] args) {
//使用jaxWs发布SOAP协议的WebService
JaxWsServerFactoryBean jaxWsServerFactoryBean=new JaxWsServerFactoryBean();
//指定WebService地址
jaxWsServerFactoryBean.setAddress("http://127.0.0.1:6666/hello");
//指定portType
jaxWsServerFactoryBean.setServiceClass(IHelloWord.class);
//指定服务类对象
jaxWsServerFactoryBean.setServiceBean(new HelloWorldImpl());
//发布服务
jaxWsServerFactoryBean.create();
System.out.println("发布服务成功");
}
}
服务端启动成功截图
【运行服务代码之后,使用Wsimport生成客户端代码,并导入客户端】
文字代码:wsimport -s . http://127.0.0.1:6666/hello?wsdl(使用之前,一定要确保你的cxf环境变量设置是成功了的,否则会报错)
生成的客户端代码如下
客户端工程截图
【ClientTest.java】
package test.cxf.client;
import java.util.List;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import test.cxf.service.IHelloWord;
public class ClientTest {
public static void main(String[] args) {
//jaxWsProxyFactoryBean调用WebService服务端
JaxWsProxyFactoryBean jaxWsProxyFactoryBean=new JaxWsProxyFactoryBean();
//调用地址
jaxWsProxyFactoryBean.setAddress("http://127.0.0.1:6666/hello?wsdl");
//设置portType
jaxWsProxyFactoryBean.setServiceClass(IHelloWord.class);
//创建portType
IHelloWord create = (IHelloWord) jaxWsProxyFactoryBean.create();
//调用portType方法
System.out.println(create.say("CXF"));
}
}
客户端调用成功后截图
cxf简单入门程序到这里就结束了,若遇到问题,请留言反馈!