Apache CXF 入门示例

jopen 12年前

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 入门示例

接口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客户端:
首先新建一个空的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 入门示例

编写客户端代码Client.java
/**   * 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!


</span></span>