这是按照网上一个示例说明,自己又从新做了一下。
当然这也是工作需要。简单易懂。
?
版本是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()); } }
?