第l3卷第2期 2010年4月 西安文理学院学报:自然科学版 Journal of Xi’an University of Arts&Science(Nat Sci Ed) Vo1.13 No.2 Apr.2010 文章编号:1008-5564(2010)02-0064434 基于SOAP和Axis2的Web服务设计与实现 周元哲,王荣喜 (西安邮电学院计算机系,陕西西安710121) 摘要:Web Service作为SOA(Service Oriented Architecture)的最好实现手段之一,很好地解决了分 布式计算和分布式平台的互操作和紧耦合问题,为分布式问题的解决提供了新思路.介绍了Web服务 框架以及支撑Web服务的WSDL、SOAP、Axis2和JUDDI等相关理论知识,通过设计与实现一个例子来 阐述Web服务创建、发布、查找和调用的整个过程. 关键词:Web服务;SOAP;Axis2;JUDDI 中图分类号:TF393.01;TP399 文献标识码:A 0引言 随着网络技术的快速发展,分布式计算和分布式平台得到了广泛的应用,但是互操作性和紧耦合特 性严重制约了它们的发展.Web服务作为SOA的最好实现手段之一,很好地解决了分布式平台遇到的 的互操作和紧耦合问题,因而,Web Service开发成为了分布式平台和分布式计算的最好技术解决方法. 如何高效地开发Web Service也就成为了当前fS--+ ̄究热点…. 1 Web服务相关技术 1.1 Web Service Web Service是一种可以用来解决跨网络应用集成问题的开 发模式,松耦合性是其处理分布式问题的最大特点和优势.Web Service体系结构基于各种角色(服务提供者、服务请求者和注册 中心)之间的交互(发布、查找和绑定).这些角色和交互一起作用 于Web服务构件、Web服务软件模块及其描述.图1显示了这些 操作、提供这些操作的组件及它们之间的交互嵋 . 1.2 WSDL WSDL(Web Service Description Language)是一种XML应用, 图1 Web服务角色、操作和构件 它将Web服务描述定义为一组服务访问点,请求者可以通过这些服务访问点对服务进行访问.WSDL 首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消 息格式上以最终定义具体部署的服务访问点. WSDL分为服务接口部分和服务实现部分.服务接口由Type、Message和PortTypt构成,是服务描述 收稿日期:2009—12-26 基金项目:国家自然科学基金资助项目(60803162,60703117,60673170);陕西省教育厅专项科研计划基金资助项 目(08JK423,08JK425) 作者简介:周元哲(1974一),男,陕西西安人,西安邮电学院计算机系讲师.研究方向:软件工程与WEB服务. 第2期 周元哲,等:基于SOAP和Axis2的Web服务设计与实现 65 的可重用部分;服务实现由Binding和Services构成,是一个描述给定服务提供者如何实现特定服务接 口的描述文档. 1.3 SOAP介绍 , SOAP(Simple Object Access Protoco1)是一种轻型的基于XML的简单通信协议,它定义了一种通过 网络传送XML消息的格式.SOAP以广泛使用的H1TrP和XML作为基础,狭义地讲,SOAP等同于H1 ’ 加上XML.SOAP为在一个松散的分布式环境中使用XML对等的交换结构化和类型化的信息提供了一 个轻量的机制.随后的例子中,从Web服务中抓取的SOAP包的过程中可以清楚地看到SOAP的这种机 制 . ’ 1.4 Axis2基础 Axis2(Apache Extensible Interaction System)是一个简单的服务器,也是一个SOAP引擎.与上 一代的Axis相比,Axis2基于新的体系结构进行了全新编写,它具有更强的灵活性、更高的执行效率和 更好的可配置性.它建立了全新的处理SOAP消息的XML对象模型,支持WSDL2.0,使得开发人员可以 方便地通过客户端存根(Stub)来访问远程Web Sevrice. 1.5 ffUDDI JUDDI(Universal Description,Discovery and Integration for Java)是一个纯Java的Web应用,实际上 是就是一个私有的UDDI注册中心,可以配置在任何应用服务器或者Servlet引擎中,由一个核心处理器 来散集UDDI请求,使用3个可配置的子组件或模块(JUDDI DataStore、JUDDI Authenticator、JUDDI UUIDGen)来调用相应的UDDI函数并列集UDDI响应. 2 Web服务的设计与实现 本文设计和实现了一个名为SimpleSevriee的Web服务.该服务功能是接受客户端输入的两个字符 串s 和s ,服务器端进行处理并返回给客户端s 和s 的相连结果.具体实现过程如下H]: 2.1创建Web服务 Web服务的创建主要有两种模式,一种是从Java代码开始,首先定义服务的操作或者实现,然后根 据Java类生成服务的WSDL文件以及客户端和服务端的Stub文件,称为“自底向上”的开发模式,另一 种是从服务的WSDL开始,首先编写服务的WSDL文档,然后生成客户端和服务器端的Stub文件,称为 “自顶向下”的开发模式. 本文采用“自顶向下”的开发模式,首先创建服务的WSDL文件,在WSDL中对于服务的PortType、 Binding、Message和Service元素的Operation、InputMessage、OutputMessage和SOAPAddress属性进行设 定.完整的WSDL视图如图2所示: 图2 SimpleService的WSDL视图 根据Web服务的WSDL文件,使用Axis2在Eclipse下的代码生成插件Axis2 Code Generator生成服 务端的Stub文件,然后编写一个类去实现在PortType中定义的操作,其核心代码如下所示: Public class SimpleService SOAP Impl implements corn.ttdev.simpleservice.SimpleService—PortType{ public java.1ang.String concat(COIn.ttdev.simplesevrice.ConcatRequest concatRequest) throws java.rmi.RemoteException{ retum concatRequest.getS1()+concatRequest.getS2(); 西安文理学院学报:自然科学版 第l3卷 } } 2.2发布Web服务 Web服务得发布,使用到Axis2在Eclipse下的另一个插件Axis2 Service Archiver,此插件将服务端 桩文件以及服务的WSDL文件打包成一个.aar文件,放在Axis2引And llO%W一・Some Services 擎中,从而完成服务的发布操作,在Axis2控制台看到刚刚发布的服 AdminService,n,sd1) 务,如图3所示;也可以采用在浏览器输入服务的发布地址h卸:// AdminService localhost:8080/axis2/services/SimpleService,查看该服务的WSDL描 VerSJDn f w sm) getVersion 述文档. SimpleServiceSOAP(w sd1) COncat 2.3注册Web服务 WEB服务注册到私有UDDI注册中心过程如下所示: 图3发布的服务列表 首先,服务开发者使用JUDDI提供的API接口,调用get—authToken()函数根据自己的USERID获 得一个authToken,然后根据此authToken调用save_Businee()函数注册一个Business,进而在该Businee 中调用save_tModel()函数发布一个tModel,最后使用save_Service函数注册Web服务. 至此,所有可以连接到此UDDI的服务请求者都可以通过调用find—Service()函数查找到已经注册 的Web服务. 2.4调用服务 . 在JUDDI中调用find_Service()函数找到SimpleService服务的详细信息,获得该服务的WSDL描述 文件,根据服务的WSDL文件,生成客户端的Stub文件,编写客户端代码调用服务,核心代码如下所示: public class StubClient{ public static void main(String[]args)throws Ser- lMt,it Fort1234 | 。 一 viceException, r‘ M. 1Z34 嗣_ _c: : ∞ 尊。 l RemoteExcepfion,MalformedURLExcepfion{ 羹 照 羹笼 一童 萋乏 ! 鲤 照 蠡 鲢 盘 。 蠢 翻 _・・一 none ∞_0B・∞15.21.21;loe lt j1…d3ao t 。 ・nt-T,p・:t ̄xt/xwJ..dI.r E SimpleService—PortType service=new Sim- pleServiceServieeLocator() | |:|÷ 1_I 0 L lj》 _璧一翟 曼一 J 薯 l | t getSimpleServiceSOAP(new URL( ‘7xml version= 1 0’encoding=。uTF-8’?> <soapetw:Envelope xmlns:soaperr+=‘http:/Ischemas xmlsoap org/soap/en ̄lopeC xmlns:xsd=。r “http://local_host:8080/SimpleService/services/ <soapenv:Body> <ns1:concatRequest xmlns:nsl=”http://ttdev co rrdss > SimpleServiceSOAP”)); <s1>abc‘,s1) <s2)124<Is2> System.out.println(service.concat(new ConcatRequest  ̄Jns1.concaIReque > 黼 美羹嚣 麓嚣蠹嚣嚣 囊囊篓囊 餐墨 囊 (“abc”,“124”)));//设置s1和S2的值 <7xmI -soln=一1 0・encoding="m‘8- > 莲l <soapenYEnvelope xm{ns:soapem= htip://schemas xmlsoap Of oap/er welopeC xmlns:xsd=。};l } <so<coapncenatv:ReBodspy>on se xmlns=“ abc124(,c0n Response> 饕 l </soapenv:Body> } </soapen ̄Envelope> ;l 在调用Web服务的过程中,通过抓取SOAP数 耱蠹蠢蠹 妻鏊 灌器萋鞠 嚣 漂 据包,显示Web服务服务器端返回的结果以及通信 _囝垂嘲口雨~i i j{§!!倒ji 垃 竺 j_曼!兰. 过程中结构化和类型化的信息,从而验证了SOAP的 图4 SOAP包中服务器端和客户端信息 工作原理.调用Web服务过程中,服务器端和客户端 信息如图4所示. 3总结与展望 本文介绍了Web Service开发过程中所需要的相关理论和相关技术,通过设计和实现一个具体的 Web服务实例,说明web Service开发的总体框架和创建、发布、注册、调用web Service的整个流程,并 通过抓取SOAP包,展示SOAP的通信机制.在此Web服务中,其功能是事先已经确定的,但是用户的需 求是多变的,不可能对每个用户的每个需求都实现可用的Web服务,在下一阶段的工作中,我们将从服 务的QoS属性出发,组合已有的Web服务,形成能够满足用户要求的新的Web组合服务. 第2期 周元哲,等:基于SOAP和Axis2的web服务设计与实现 [参考文献] 67 [1]陈彦萍,李增智,宋承谦,等.基于可复用组件的业务管理模型[C].//国家自然科学基金重大研究计划网络与信 息安全2003年度学术交流论文集.北京:国家自然科学基金委员会,2004:210—215. [2]周元哲,陈彦萍.基于轻量级架构的《面向服务架构>课程系统设计与实现[J].电子设计工程.2009,17(4):1—3. [3]翟峰,郝克刚,葛玮.基于SOAP构建Axis上的Web Service[J].计算机应用与软件.2008,25(1):156—158. [4]YANGPING c,ZENGZHI L,CHANG W.Study on Dynamic Management Constraints or Service—oriented Network Man- agement[C].//III the First International Conference on Communicaiton and Information Proceeding(ICCI’05).Beijing, China,2005:219 l_224. [责任编辑马云彤] Design and Implementation of Web Service Based on SOAP and Axis ZHOU Yuan-zhe,WANG Rong-xi (Department of Computer Science,Xi’an Insittute of Post and Telecommunications,Xi’an 710121,China) Abstract:As one of the best methods to implement the Service Oriented Architecture。the Web Service gives the distributed computing and distributed platforms a good solution to solve the problems of interoperabflity and itght coupling,and it gives a new concept for dealing wih tthe distributed problems.嘶s paper introduces the frame of Web Service and the theories of WSDL。SOAP。Axis2 and JUDDI.A simple sample to introdueed to explain the whole process of creating,deploying,finding and invoking he Web Sertvice. Key words:Web Service;SOAP;Axis2;JUDDI