这是按照网上一个示例说明,自己又从新做了一下。
当然这也是工作需要。简单易懂。
版本是apache-cxf-2.6.2
百度的名片:
关于Apache 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 CXF已经是一个正式的Apache顶级项目。
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。
一、如何发布一个Webservice
先看一下要发布的那个Java文件:
package com.eetrust.webservice;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.WebParam;
/**
* function:CXF WebService 服务器端helloWorld示例
* @author sunac
* @createDate 2012-9-26 上午08:29:07
* @file HelloWorldService.java
* @package com.eetrust.webservice
* @project TestProperty
* @version 1.0
*/
@WebService
@SOAPBinding(style = Style.RPC)
public class HelloWorldService {
public String sayHello(@WebParam(name = "name") String name){
return name + "say: HelloWorld";
//可以其他处理逻辑
}
}
下面要对这个Service进行发布了:
看下面这个代码文件:
package com.eetrust.deploy;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.eetrust.webservice.HelloWorldService;
/**
* function:CXF WebService 服务器端发布
* @author sunnyboysac
* @createDate 2012-9-26 上午08:29:07
* @file HelloWorldService.java
* @package com.eetrust.deploy
* @project TestProperty
* @version 1.0
*/
public class DeployHelloWorldService {
public static void deploy(){
System.out.println("-----Server start -----");
HelloWorldService service = new HelloWorldService();
JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
factoryBean.setAddress("http://localhost:8080/HelloWorld");
factoryBean.setServiceClass(HelloWorldService.class);
factoryBean.setServiceBean(service);
factoryBean.create();
System.out.println("发布成功");
}
public static void main(String[] args) {
deploy();
}
}
运行上面这个文件,Console显示发布成功的话,该Webservice就可以使用了访问http://localhost:8080/HelloWorld?wsdl
可以访问的话,说明Webservice发布成功了
二、如何生成Java客户端调用Webservice
package com.eetrust.client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
* function cxf客户端 调用webservice提供的方法sayHello
* @author sunac
* @createDate 2012-09-27
* @file Client.java
* @package com.eetrust.client
* @project TestProperty
* @version 1.0
*/
public class Client {
public static void main(String[] args) throws Exception{
JaxWsDynamicClientFactory cxf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = cxf.createClient("http://127.0.0.1:8080/HelloWorld?wsdl");
System.out.println("===================================");
//sayHello 为接口中定义的方法名称 张三为传递的参数 返回
Object[] objects = client.invoke("sayHello", "张三");
//输出调用结果
System.out.println(objects[0].toString());
}
}