使用xfire调用xfire webservice教程需要什么jar

& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区1 背景概述由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法。2 预期读者数通畅联内部员工广大计算机爱好者3 名词解释Web Service也叫Soap:(Simple Object Access Protocol)简单对象存取协议。是WSDL:(Web Services Description Language) WSDL 文件是一个 UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的4 实现思路通过soapUI工具使用四种WebService框架来生成客户端代码进行调用,或者使用Xfire的jar包中的的Client类进行调用,无需生成客户端代码,还可以使用AEAI ESB工具中的soup调用组件进行调用。5 实现步骤5.1 工具材料soapUI-3.6.1:soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。Axis:axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis2:Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Cxf:Apache CXF = Celtix +&XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对&JAX-WS&全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Xfire:XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。AEAI ESB企业服务总线(Enterprise Service BUS,ESB)主要作为企业信息系统的&龙骨&来集成各业务系统,实现异构系统的互联互通。沈阳数通畅联软件技术有限公司推出的ESB产品命名为AEAI ESB。AEAI ESB主要包含三个模块:服务器ESBServer、设计器ESBDesigner、管理控制中心。ESBServer是AEAI ESB的运行环境,基于定制的Tomcat 扩展开发,管理控制中心则是部署在ESBServer的Java Web应用,基于开发平台构建的。ESBDesigner是基于Eclipse Plugin开发的图形化、拖拽式的设计Web服务、消息流程的构建工具。5.2 前置条件创建web服务使用AEAI ESB创建一个简单的接口(具体方法参见AEAI ESB集成平台技术手册5.2.7):样例中的web服务入参为三个数字,出参为三个数字相加得到的和。soapUI工具配置在soapUI中进行相关配置,如图:&在附件中有Apache文件夹,将文件夹放到指定路径下,在如下图进行配置将四种框架的地址填写进对应的位置,还有jdk的位置,注意Xfire需要ANT的支持。5.3 方法步骤5.3.1 Axis框架在soapUI的菜单栏中选择Tools中的Axis 1.x选项在(1)处填写需要调用的web服务的URL在(2)处填写生成的客户端代码的位置点击(3)处按钮生成客户端代码在对应的路径下找到代码文件将代码拷贝到自己新建的 工程目录下注意:出现缺包的错误时,将Apache中对应框架的文件家中的lib包导入即可,新建一个Test类,其中对应的测试调用代码如下:public&class&Test {&&&&&public&static&void&main(String[] args)throws&Exception {&&&&&&& AddAllNum_ServiceLocator locator =&new&AddAllNum_ServiceLocator();&&&&&&& AddAllNumSoapBindingStub stub = (AddAllNumSoapBindingStub)locator.getAddAllNumPort();&&&&&&& System.out.println(stub.addNum("1", "2", "3"));&&& }&}&运行结果:5.3.2 Axis2框架在soapUI的菜单栏中选择Tools中的Axis 2选项,如图:在(1)处填写调用的接口的URL在(2)处填写生成代码的位置在(3)处填写包名在(4)处注意通过adb模式进行生成点击(5)处的按钮生成客户端代码生成出来的代码以及文件都添加到新建的调用服务的工程中将生成的客户端代码放入到新建的工程中,导入对应框架的包新建Test类,对应的调用代码如下:public&class&Test {&&&&public&static&void&main(String[] args)&throws&Exception{&&&&&&& AddAllNumStub stub =&null;&&&&&&& stub =&new&AddAllNumStub();&&&&&&& AddAllNumStub.AddNum addNum =&new&AddAllNumStub.AddNum();&&&&&&& addNum.setNum1("1");&&&&&&& addNum.setNum2("2");&&&&&&& addNum.setNum3("3");&&&&&&& System.out.println(stub.addNum(addNum).getResult());&&& }}&运行结果:5.3.3 Cxf框架在soapUI的菜单栏中选择Tools中的CXF选项,如图:在(1)处填写需要调用的URL在(2)处填写生成的代码文件的位置在(3)处填写代码的包名点击(4)处的按钮生成客户端代码将生成的代码放到新建的工程中,导入CXF的包后在AddAllNum_Service.java中出现错误,将出错的地方注释,如图创建Test类,测试调用接口对应的测试调用代码如下:public&class&Test {&&&&public&static&void&main(String[] args)&throws&Exception {&&&&&&& URL wsdlLocation =&new&URL("http://localhost:9090/TestWebServices/services/AddAllNum?wsdl");&&&&&&& AddAllNum_Service addAllNum_Service =&new&AddAllNum_Service(wsdlLocation);&&&&&&& AddAllNum addAllNum = addAllNum_Service.getAddAllNumPort();&&&&&&& String result = addAllNum.addNum("2","3","4");&&&&&&& System.out.println(result);&&& }}运行结果:&5.3.4 Xfire框架第一种调用方式:生成客户端代码进行调用在soapUI的菜单栏中选择Tools中的XFire1.x选项,如图:在(1)处填入需要调用的web服务的URL在(2)处填入生成客户端代码的位置在(3)处填入生成的客户端代码的包名在(4)处注意需要使用jaxb模式生成点击(5)处的按钮生成客户端代码将生成的代码放到到新建工程下,导入Apache文件夹下的xfire-lib目录下的包创建Test类,对应的调用方法:&&&&public&static&void&main(String[] args) {&&&&&&& AddAllNumClient addAllNumClient =&new&AddAllNumClient();&&&&&&& String result = addAllNumClient.getAddAllNumPort().addNum("1", "2","2");&&&&&&& System.out.println(result);&&& }运行结果:&第二种调用方式:通过WSDl创建一个动态的客户端新建工程,引入XFire对应的jar包(Apache目录下的xfire-lib目录中的包),注意此时需要在接口服务端的AddNum文件中添加一段代码@SOAPBinding(style=Style.RPC)重新部署工程,如下:在新建的工程中的Test类中的调用,如下图:对应的调用代码,如下:public&class&Test {&&&&public&static&void&main(String[] args)&throws&MalformedURLException, Exception {&&&&&&& String url = "http://localhost:9090/TestWebServices/services/AddAllNum?wsdl";&&&&&&& Client client =&new&Client(new&URL(url));&&&&&&& String num1 = "2";&&&&&&& String num2 = "3";&&&&&&& String num3 = "4";&&&&&&& Object[] result = client.invoke("addNum",new&Object[]{num1,num2,num3});&&&&&&& System.out.println(result[0]);&&& }}运行结果:5.3.5 Aeai Esb调用首先在接口工程上右键,设置ESB应用选择WS引用,将WSDL的地址添加进去,解析名称、生成代理在MF服务目录下创建http消息流程TestSoupWeb选择数据适配器在JavaInvoker1组件中选择扩展代码,如图:public&void&invoke()&throws&AdapteException{&&&&&&& AddNum addNum = (AddNum)&this.xgetVariable("addNum").getValue();&&&&&&& addNum.setNum1("1");&&&&&&& addNum.setNum2("2");&&&&&&&&addNum.setNum3("3");&&& }&SoapInvoker1组件选择如图:然后HttpResponse节点选择响应内容如图:在浏览器调用HttpRequest节点中的URL运行结果:6 附件及说明Apache目录:四种Web服务框架以及Ant工具WebService目录:Web服务接口Test目录:文档中涉及的四种框架五种调用的样例客户端工程Sqls目录:AEAI ESB需要使用的数据库文件Jdk目录:存放了soapUI配置时需要用到的JDKWebService服务调用方法介绍 & & & & & & & &下载
、 、 、 、 、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 xfire webservice教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信