java用XFire开发调用webService例子XFire概述XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。XFire目前最新的版本是1.2.2,目前支持的特性主要包括:支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor;支持基于HTTP、JMS、XMPP等多种协议访问Web服务;支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等;支持JSR181,可以通过JDK5配置Web服务;高性能的SOAP实现;服务器端、客户端代码辅助生成;对Spring、Pico、Plexus等项目的支持等。XFire安装包XFire框架目前的最新版本是1.2.6,可以访问xfire.codehaus.org下载XFire框架的安装包,下载时请选择“全部二进制发布包(BinaryDistributioninzippackage)”,而不仅仅是“XFirejar文件(JarofallXFiremodules)”。下载完成后,我们可以将下载的.zip文件解压缩到任意的文件夹中(后面的章节中使用%XFIRE_HOME%表示XFire框架的安装目录),解压缩后形成的文件目录结构如下:api(目录)api目录中是XFire框架中所有类(class)对应的API文档,为开发者使用XFire完成应用开发提供帮助。examples(目录)examples目录中包含了所有随XFire二进制包发布的实例,包括这些实例的源代码和相关Web应用配置内容。lib(目录)lib目录中包含XFire运行所需要的外部支持类包(.jar文件),可以根据不同项目所需的XFire特性选择所需要的支持类包。保守的方法是在Web项目中包含所有的外部支持类包(.jar文件)。manual(目录)manual目录中包含有XFire框架的帮助文档,开发者可以从这些帮助文档中学习更多运用XFire框架实现SOA的知识和技巧。modules(目录)modules目录中包含了XFire框架根据不同特性分别编译的二进制包文件。发布基于XFire框架的Web项目时,可以选择使用该目录下的所有.jar文件,也可以选择XFire-all-1.2.6.jar文件。XFire-all-1.2.6.jarXFire框架的二进制包文件,包含了全部的模块(modules)。LICENSE.txtLICENSE.txt文件中包含了XFire框架的授权协议。NOTICE.txtREADME.txt这两个文件中包含了XFire发布时的一些有用的信息。如果不是用MyEclipse开发,先下载XFire的jar到lib目录。开发新建webservice工程myeclipse-new-project-webserviceproject新建包:test.新建接口和服务类。XFire是以接口反射机制开自动取得远程方法的。接口:publicinterfaceIAccount{publicintaccount(intx,inty);}实现类:publicclassAccountImpimplementsIAccount{publicintaccount(intx,inty){//TODOAuto-generatedmethodstubreturnx*y;}}在webservices包下再新建webserviceservicename:mywebserviceserviceinterface:test.IAccount//手动选择导入test包下的IAccount接口serviceclass:test.AccountImp//业务实现类//协议为soap协议,MyEclipse下配置保持不变。自动生成的services.xml配置如下?xmlversion=1.0encoding=UTF-8?beansxmlns=自动加入在web.xml配置如下:?xmlversion=1.0encoding=UTF-8?web-appxmlns=:xsi==2.4xsi:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdservletservlet-nameXFireServlet/servlet-nameservlet-classorg.codehaus.xfire.transport.http.XFireConfigurableServlet/servlet-classload-on-startup0/load-on-startup/servletservlet-mappingservlet-nameXFireServlet/servlet-nameurl-pattern/services/*/url-pattern/servlet-mappingwelcome-file-listwelcome-fileindex.jsp/welcome-file/welcome-file-list/web-app这两个文件都是IDE自动生成的。也可以手写。测试一下wsdl。输入地址://域名/工程名/services/service.xml配置的name:MyService;结果如下:?xmlversion=1.0encoding=UTF-8?-wsdl:definitionstargetNamespace===:soap12=:xsd=:soapenc11=:soapenc12=:soap11=:wsdl=:types-xsd:schemaxmlns:xsd==qualifiedelementFormDefault=qualifiedtargetNamespace==account-xsd:complexType-xsd:sequencexsd:elementmaxOccurs=1minOccurs=1name=in0type=xsd:int/xsd:elementmaxOccurs=1minOccurs=1name=in1type=xsd:int//xsd:sequence/xsd:complexType/xsd:element-xsd:elementname=accountResponse-xsd:complexType-xsd:sequencexsd:elementmaxOccurs=1minOccurs=1name=outtype=xsd:int//xsd:sequence/xsd:complexType/xsd:element/xsd:schema/wsdl:types-wsdl:messagename=accountResponsewsdl:partname=parameterselement=tns:accountResponse//wsdl:message-wsdl:messagename=accountRequestwsdl:partname=parameterselement=tns:account//wsdl:message-wsdl:portTypename=MyServicePortType-wsdl:operationname=accountwsdl:inputname=accountRequestmessage=tns:accountRequest/wsdl:outputname=accountResponsemessage=tns:accountResponse//wsdl:operation/wsdl:portType-wsdl:bindingname=MyServiceHttpBindingtype=tns:MyServicePortTypewsdlsoap:bindingstyle=documenttransport=:operationname=accountwsdlsoap:operationsoapAction=/-wsdl:inputname=accountRequestwsdlsoap:bodyuse=literal//wsdl:input-wsdl:outputname=accountResponsewsdlsoap:bodyuse=literal//wsdl:output/wsdl:operation/wsdl:binding-wsdl:servicename=MyService-wsdl:portname=MyServiceHttpPortbinding=tns:MyServiceHttpBindingwsdlsoap:addresslocation=:port/wsdl:service/wsdl:definitions创建webservice成功!无论用net,还flex都可以调用。java远程调用。新建web工程WebServiceTest由于在MyEclipse中只有新建webservice才会自动导入xfire的所需jar包。所以使用时自己手动导入,把jar包考入lib