摘 要 随着Internet上Web服务的快速增长,客户如何发现想要的Web服务,已经是Web服务技术中的难点和关键问题。UDDI可以使各企业公开发布自己的服务以及服务的调用方式。本论文介绍了Web服务技术原理、UDDI注册中心,重点阐述了基于单关键词、布尔模型的Web服务搜索方法,设计和实现了基于UDDI的Web服务发现系统,并取得了较好的效果。
关键词 UDDI;UDDI4J;Web服务发现
0 引言
Web服务具有自包含、自描述以及模块化应用的特点,并可在Web 上发布、发现与使用[1, 2],即将成为WWW发展的下一步趋势。然而要使计算机自动、快速、准确地从形态万端、日益膨胀的Web服务群中发现最满足客户需要的服务具有很大的困难。这已经成为Web服务发展的关键问题,尤其是在Web服务的动态组合和基于Web服务的各种应用中。UDDI提供了一组基于标准的规范如可扩展标记语言(Extensible Markup Language,XML)和简单对象访问协议(Simple Object Access Protocol,SOAP),用于描述和发现服务,还提供了一组基于因特网的实现。UDDI 支持一种适应性极强的服务描述,几乎可以使用任何接口。而UDDI(Universal Description, Discovery and Integration)注册的作用就是用于促进对这些Web服务的发现。也就是说,通过UDDI,程序可以发现并与其他公司发布的Web服务进行交互,这促进了企业的web服务的发展及为企业发现适当的Web服务提供了可行的方法,解决了企业遇到的大量问题,并赢得了业界的支持。
1 UDDI的工作原理
UDDI计划的核心组件是UDDI商业注册,它使用一个XML文档来描述企业及其提供的Web服务,并维护了一个企业和企业提供的web服务的全球目录。UDDI 注册中心是所有提供公共UDDI注册服务的站点的通称。它是一个逻辑上的统一体,在物理上则是以分布式系统的架构实施的,而不同站点之间是采用P2P(对等网络)架构实施的,因此访问其中任意一个站点就基本等于访问了UDDI 注册中心。UDDI Operator Site(UDDI注册中心操作入口站点,简称UDDI操作入口)是UDDI Registry中每一个对等结点,对UDDI Operator Site的查询所获得的结果是覆盖全UDDI 注册中心中的信息的,信息查询无需身份认证;而在UDDI Operator Site上进行信息发布则必须使用该UDDI Operator Site自身的用户方能实施,同时以后的更新、删除都必须通过这个Operator Site,并使用初始发布时使用的用户进行权限认证。
图1 UDDI工作原理
UDDI的工作原理如图1所示,它说明了如何往UDDI注册中心送入数据,顾客又如何能发现和使用这一信息。UDDI注册中心建立在顾客提供的数据的基础之上。要使数据能在UDDI中物尽其用需要几个步骤:
第1步,在软件公司和标准组织定义关于在UDDI中注册的行业或企业的规范时,开始向注册中心发布有用的信息。这些规范叫做技术模型(tModel)。
第2步,公司注册关于其业务及其提供的服务的描述。
第3步,UDDI 注册中心会给每个实体指定一个在程序中唯一的标识符,叫做唯一通用标识符(Unique Universal Identifier, UUID)键,从而能随时了解所有这些实体的情况。UUID 键必须是唯一的,并且在一个UDDI注册中心中从来都不会变化,可以利用这些键来引用与之相关联的实体。在一个注册中心中创建的UUID键只在该注册中心的上下文中有效。
第4步,诸如电子交易场所(e-Marketplace)和搜索引擎等其它类型的客户机与商业应用程序(例如,基于工作流聚合起来的Web服务)使用UDDI注册中心来发现它们感兴趣的服务。
第5步,另外的企业就可以调用这些服务,简便的进行动态集成。
2 UDDI4J简介
UDDI 注册中心包含了通过程序手段可以访问到的对企业和企业支持的服务所做的描述。此外,还包含对 Web 服务所支持的因行业而异的规范、分类法定义(用于对于企业和服务很重要的类别)以及标识系统(用于对于企业很重要的标识)的引用。UDDI 提供了一种编程模型和模式,它定义与注册中心通信的规则。UDDI 规范中所有 API都用 XML 来定义,包装在 SOAP 信封中,在 HTTP 上传输。
UDDI4J最初是由IBM于2001年1月作为一个开放源代码项目在developerWorks上发行的,这鼓励了其它公司和个人的加入。在最新的版本2中,HP 作为UDDI4J的发展中一个主要的参加者加入了这一阵营,UDDI版本2中的很多改进都是由它贡献的。在IBM、HP 和SAP的积极支持和认可之下,UDDI4J已经成为进行UDDI交互的缺省Java API。
UDDI4J的类库包含了UDDI客户机端应用程序需要发布、发现和绑定Web服务的方方面面的实现。UDDI API可以分为查询API和发布API。这些API使用不同的URL。发布URL通常使用SSL来指定https地址。在使用Java 编程语言中的SSL时,必须定义JSSE提供者,并将其添加到安全性管理器组中。
UDDI4J中处于核心位置的类是org.uddi4j.client. UDDIProxy。它是用来与UDDI注册中心进行交互的主要的类。它提供连接到UDDI注册表、执行查询和处理结果所需要的所有方法。UDDIProxy要求同时指定查询URL和发布URL。一旦设置之后,在修改这些值前所有的方法调用都使用这些URL。在使用发布API 时,需要输入用户名和密码。通常情况下是通过用与所选的注册中心有关的Web站点创建一个帐户来获得用户名和密码。
3 系统总体框架
该系统大致由三部分组成,配置模块、搜索模块和用户界面。搜索模块中又可以分为组合搜索和基于关键字的搜索。框架图如图2所示。
图2 系统总体框架图
配置模块主要是设置所要访问的注册中心的发布URL和查询URL,调用UDDI4J方法,并确保信息传输的安全。在程序运行的时候可以查询UDDI服务以揭示当前的服务绑定信息并直接连接到服务上。
搜索模块主要是响应用户界面的信息并进行查询,然后返回给用户界面。它首先要构建一个UDDIProxy,确定查询URL和发布URL是否有效,从而可以正确的访问UDDI注册中心。对出现的错误进行异常处理。
用户界面主要是用户与机器的交互,用户通过这个界面来查询想要的Web服务。查询后的结果也将要显示在用户界面里。从而使得怎样访问到UDDI注册中心,通过什么方法查询到想要的Web服务对于用户来说是完全透明的。
4 系统具体实现
在WindowsXP环境下利用Eclipse3.1 + Myeclipse4.1+ j2sdk5.0 搭建J2EE开发环境,用MySQL数据库做后台完成此系统。系统利用UDDI4J 在基于单关键词搜索方式的基础上实现了基于布尔模型的Web服务搜索。
4.1 基于单关键词的Web服务搜索
当Web服务用户登陆到特定的 UDDI操作站点上后可以向注册中心发出请求,也可以使用集成在本地的UDDI Search Engine进行查询。Web查询服务时有几种不同的搜索参数,其中最简单的是搜索字符串。当一个携带用户信息的XML文档到达UDDI的注册中心后,一般采用遍历搜索查询中心内部的“数据库”,找出一个个提供Web服务的代理商,并使用用户给出的关键词去匹配Description中的SeviceData元素中的内容,这项工作是递归进行的。其流程如图3所示。
Web服务查询的实现需要使用UDDI4J的查询API。每个UDDI数据结构(businessEntity,businessService,bindingTemplate和tModel)都有一个find_xxx和get_xxx函数,这8个函数构成了查询API。它允许用户在数据实体上的注册表中搜索关键词或者值,然后给出所有与这个条目相关的数据。这个API主要作为查找和显示最终用户想查找的企业、服务等的一种方法。Find_xxx一般是用于定位特定的服务,get_xxx一般是用于得到完整的信息。
基于单关键词的Web服务查询的实现过程是:
1)创建Inquiry对象,并设置查询地址。通过Inquiry类定义的FindBusiness方法结合getBusinessDetail方法可以在UDDI注册中心数据库中查询商业实体的各种信息。
2)声明FindBusiness对象,并设置查询服务名和相关属性。FindBusiness方法要求一个FindBusiness对象作为参数,用来定义查询的条件。构建FindBusiness对象并设置它的一些属性,比如setName(new Name(“IBM”),查询以IBM命名的商业实体。查询结果可以得到所有满足查询条件的BusinessInfo对象的Vector。
3)获得BusinessList对象和BusinessKey。BusinessInfo定义了商业实体的基本信息,比较重要的是Name和BusinessKey。
图3 关键字搜索流程图
4.2 基于布尔模型的Web服务搜索
用户的查询请求有时很难用一个简单的关键词来表示。目前大多数信息获取模型依赖于布尔模型。在布尔模型中,用户的查询请求可以通过若干个关键词的集合表示。一个查询是由一些通过逻辑操作符(如AND、OR、NOT)连接起来的关键词所组成。通过布尔模型,用户可以尽量将查询的需求描述清楚,提高用户查询Web服务的精度。
可是,目前UDDI4J不支持布尔模型的查询方式。本系统是在单关键词查询方式的基础上,设计并实现了基于布尔模型的Web服务搜索,主要实现方案
1) 用户输入n个关键词,分别是Key1、Key2、…、Keyn,并选择关键词之间的逻辑操作符后,进行查询;
2) 到注册中心搜索关键词Key1,得到Result1;
3) 判断是否还有后续关键词。如果有后续关键词,则判断后续关键词前的逻辑操作符,如果是“AND”转4-1),如果是“OR”转4-2),否则转4-3)。如果没有后续关键词,则结束;
4-1) 在Result1中搜索查询后续关键词得到Result2,然后转到5);
4-2)到注册中心搜索后续关键词,对所得到的搜索结果合并到Result1中,得到Result2,然后转到5);
4-3)在Result1中删除包含后续关键词的记录,得到Result2,然后转到5);
5) 将Result2的结果作为Result1,然后转到3);
最后输出结果Result1就是所要查找的结果。
5 结论
通过UDDI,使企业之间信息集成、业务集成、资源共享、有效实现产品商务的协同、产品设计的协同、产品制造的协同和供应链的协同,从而缩短产品研究周期和费用,提高企业竞争力,其前景是十分广阔的。本系统已经实现了访问注册中心并基于关键词的Web服务的功能。在下一步的研究中将考虑更复杂的模型,如向量模型、基于命题逻辑的模型,提高Web服务发现的精确度,进一步完善Web服务发现系统的性能。
参考文献
[1] B. Loesgen. BizTalk Server 2004 和 Web 服务. http://www.microsoft.com/china/MSDN/library/We-bServices/WebServices/BTS2004WP5cab05ab.ms- px, 2005.9
H.B. Wang, J.Z. Huang and etc. Web Services: Problems and Future Directions. Web Semantics: Science, Services and Agents on the World Wide Web, Vol.1, 2004:309-320
李大成.UDDI技术及应用概览[J].计算机工程.2002,12:1-5
Rashim Mogha,V.V.Preetham。Java Web服务编程。北京:清华大学出版社,2003,11
UDDI Version 2.0 API Specification,http://uddi.org/pubs/ProgrammersAPI_v2.htm,2006.5
徐宝文,张卫丰。搜索引擎与信息获取技术。北京:清华大学出版社,2003,4
相关文章
学术参考网 · 手机版
https://m.lw881.com/