您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > CXF WebService完整
CXFWebService开发指南一、CXFWebService准备工作二、CXF入门示例三、CXF对Interceptor拦截器的支持四、CXFWebService中传递复杂类型对象五、CXF整合SpringVersion1.02011-03-30IT达人自由IT职业blog.csdn.net/IBM_hoojo授之以鱼,不如授之以渔!希望能给广大IT朋友带来一些帮助1CXFWebService技术指南欢迎转载请保留原文作者信息不得未经作者允许用于商业用途CXFWebService上次介绍了Axis的WebService,现在我们来看看CXF是怎么完成WebService的。Axis1WebService在线博文:在线博文:一、准备工作1、CXF官方网址:、Jar包下载地址:=/cxf/2.3.3/apache-cxf-2.3.3.zip将下来的jar包解压后,目录大概就这样bin目录提供的是常用的dos控制台命令工具docs帮助文档libjar包、依赖库lib-samples也是jar包,有jetty、httpclients、junit等jar包modules打包好的WebService模块samples示例demo3、源码下载:=/cxf/2.3.3/apache-cxf-2.3.3-src.zip有时候你可以看看源码,对你了解和学习CXFWebService都会有作用。4、CXF的特性有代码生成工具:JavatoWSDL;WSDLtoJava;XSDtoWSDL;WSDLtoXML;WSDLtoSOAP;WSDLtoService;支持JAX-WS、JAX-WSA、JSR-181和SAAJ;支持SOAP1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和WS-Policy;支持WSDL1.1、2.0;支持MTOM;、JavaScript、通过Yoko支持CORBA;通过Tuscany支持SCA;通过ServiceMix支持JBI内置Jetty应用服务器2CXFWebService技术指南欢迎转载请保留原文作者信息不得未经作者允许用于商业用途二、CXF入门实例又一HelloWorld示例,老套的HelloWorld是入门经典。也是基础和必须掌握的,下面看看HelloWorldWebService,很简单。需要的jar包如下:1、HelloWorldService服务器端代码packagecom.hoo.service;importjavax.jws.WebParam;importjavax.jws.WebService;importjavax.jws.soap.SOAPBinding;importjavax.jws.soap.SOAPBinding.Style;/***bfunction:/bCXFWebService服务器端helloWorld示例*@authorhoojo*@createDate2011-3-16上午08:29:07*@fileHelloWorld.java*@packagecom.hoo.service*@projectCXFWebService*@blog*@emailhoojo_@126.com*@version1.0*/@WebService@SOAPBinding(style=Style.RPC)publicclassHelloWorldService{publicStringsayHello(@WebParam(name=name)Stringname){returnname+say:HelloWorld;}}要说明的是,上面的服务器端代码运用了JDK5的新特性Annotation,这个非常好用。需要注意的是,如果不添加@SOAPBinding(style=Style.RPC)注解,将会出现异常:com.sun.xml.internal.ws.model.RuntimeModelerException:runtime3CXFWebService技术指南欢迎转载请保留原文作者信息不得未经作者允许用于商业用途modelererror还有就是如果jdk版本在1.6下,也会出现上面的异常。解决办法有:1先用apt命令将主程序进行编译,然后生成一些java文件2升级JDK到版本jdk1.6u17或以后2、发布HelloWorldService,代码如下:packagecom.hoo.service.deploy;importjavax.xml.ws.Endpoint;importcom.hoo.service.HelloWorldService;/***bfunction:/b发布CXFWebService*@authorhoojo*@createDate2011-3-17上午09:24:33*@fileDeployHelloWorldService.java*@packagecom.hoo.deploy*@projectCXFWebService*@blog*@emailhoojo_@126.com*@version1.0*/publicclassDeployHelloWorldService{/***bfunction:/b发布WebService*@authorhoojo*/publicstaticvoiddeployService(){System.out.println(Serverstart……);HelloWorldServiceservice=newHelloWorldService();Stringaddress=(address,service);}publicstaticvoidmain(String[]args)throwsInterruptedException{//发布WebServicedeployService();System.out.println(serverready……);Thread.sleep(1000*60);System.out.println(serverexiting);//休眠60秒后就退出System.exit(0);4CXFWebService技术指南欢迎转载请保留原文作者信息不得未经作者允许用于商业用途}}运行上面的main函数后,如果没有发现异常。基本信息是这样的:Serverstart……2011-3-1710:17:25org.apache.cxf.service.factory.ReflectionServiceFactoryBeanbuildServiceFromClass信息:CreatingService{}HelloWorldServiceServicefromclasscom.hoo.service.HelloWorldService2011-3-1710:17:25org.apache.cxf.endpoint.ServerImplinitDestination信息:Settingtheserver'spublishaddresstobe:17:25.375:INFO::jetty-7.2.2.v201012052011-03-1710:17:25.468:INFO::StartedSelectChannelConnector@localhost:9000serverready……那么你在WebBrowser中请求:就可以看到xml内容了。3、定制客户端调用WebService的接口,这个接口中的方法签名和参数信息可以从wsdl中的内容看到,代码如下:packagecom.hoo.service;importjavax.jws.WebParam;importjavax.jws.WebService;/***bfunction:/b客户端调用WebService所需要的接口*@authorhoojo*@createDate2011-3-17上午09:00:00*@fileIHelloWorldService.java*@packagecom.hoo.service*@projectCXFWebService*@blog*@emailhoojo_@126.com*@version1.0*/@WebServicepublicinterfaceIHelloWorldService{publicStringsayHello(@WebParam(name=name)Stringname);}5CXFWebService技术指南欢迎转载请保留原文作者信息不得未经作者允许用于商业用途4、编写客户端调用WebService代码packagecom.hoo.client;importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean;importcom.hoo.service.IHelloWorldService;/***bfunction:/bCXFWebService客户端调用代码*@authorhoojo*@createDate2011-3-16上午09:03:49*@fileHelloWorldServiceClient.java*@packagecom.hoo.client*@projectCXFWebService*@blog*@emailhoojo_@126.com*@version1.0*/publicclassHelloWorldServiceClient{publicstaticvoidmain(String[]args){//调用WebServiceJaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();factory.setServiceClass(IHelloWorldService.class);factory.setAddress();IHelloWorldServiceservice=(IHelloWorldService)factory.create();System.out.println([result]+service.sayHello(hoojo));}}运行上面的程序后,结果如下:2011-3-1710:23:34org.apache.cxf.service.factory.ReflectionServiceFactoryBeanbuildServiceFromClass信息:CreatingService{http://
本文标题:CXF WebService完整
链接地址:https://www.777doc.com/doc-5987209 .html