Apache CXF

Apache CXF = Celtix + XFire,提供了对 JAX-WS全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。

CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。

下载CXF:http://cxf.apache.org/download.html

简单的App项目入手
建立CXF服务端:
Apache CXF_第1张图片

接口HelloWorld.java
@WebService
public interface HelloWorld {
	@WebMethod
	String sayHi(@WebParam(name="name") String name);
}
实现类HelloWorldImpl.java
@WebService(endpointInterface="cn.nevo.cxf.ws.HelloWorld", serviceName="HelloWorldImpl")
public class HelloWorldImpl implements HelloWorld {

	public String sayHi(String name) {
		return name + ", The Apache CXF Application!";
	}
}

服务端Server.java
public class Server {

	public static void main(String[] args) {
		HelloWorld hw = new HelloWorldImpl();
		//使用Endpoint.publish发布Web Service
		Endpoint.publish("http://192.168.1.14/hello", hw);
		System.out.println("Web Service发布成功!");
	}
}
启动服务,CXF内置了Jetty服务器,此时可以通过http://192.168.1.14/hello?wsdl访问暴露接口的详细信息

建立CXF客户端:
客户端的访问使用wsdl2java的方式,这是CXF自带的一个命令,CXF客户端的访问方式有多种,参见:
http://cxf.apache.org/docs/how-do-i-develop-a-client.html#HowdoIdevelopaclient%3F-JAXWSProxy

首先新建一个空的App项目,cmd下进入到此项目的src目录,输入:
F:\eclipse\work\cxf_ws_client\src>wsdl2java http://192.168.1.14/hello?wsdl
会自动生成如下红色方框内所示的代码,wsdl2java是CXF自带的命令,其它命令见其bin目录(配置bin的path),修改了服务端的url后要重新通过wsdl2java命令生成客户端代码改变其相应的wsdl信息。

Apache CXF_第2张图片

编写客户端代码Client.java
找到自动生成的类中继承了Service的这个类(如:public class HelloWorldImpl extends Service ),此类的实例便可返回一个远程Service的代理,通过这个代理我们便可访问发布的服务接口方法
/**
 * Web Service客户端
 * @author yanghong.zhou
 *
 */
public class Client {
	public static void main(String[] args) {
		HelloWorldImpl factory = new HelloWorldImpl();
		//返回远程web service的代理
		HelloWorld hw = factory.getHelloWorldImplPort();
		System.out.println(hw.sayHi("hunan"));
	}
}
在Jetty服务器启动的情况下,运行Client.java输出:hunan, The Apache CXF Application!


你可能感兴趣的:(Apache CXF)