基于JAVA实现基于本体的Web服务发现
2009-02-02
作者:张 钋 朱 倩 李涓子 王克宏
1、引言
随着INTERNET应用的普及和软件技术的进步,基于Web的网络计算模式或INTERNET计算模式得到了广泛的重视和应用。目前,面向Web应用的三层结构(或多层结构)、构件化的商务逻辑封装、基于XML和Web Services的自动电子商务等理论和技术深入人心。而现有的这些Web技术并不能真正解决人们期待已久的智能搜索引擎、智能信息代理、智能交易代理等基于Web的个性化、智能化的服务。这正是语义Web(Semantic Web)要解决的问题。语义Web是对当前Web的一种扩展,它允许用户更简便地查找、共享以及组合信息。用本体来改进目前Web Services,使之成为语义Web服务(Semantic Web Services),正是目前国际上语义Web研究中的共识。基于此,W3C,DARPA等研究机制定了基于本体的,应用于Web的技术标准,如RDF、DAML和OWL等。
同时,基于语义的自动Web Services发现机制是自动Web Services协作机制中的重要一环,。提出这个问题的关键因素来源于Web Services本身的发展。因为随着Web Services的不断走向实际应用,所提供的Web Services也越来越丰富,简单的基于UDDI的Web Services发现机制已经不能满足这种不断发展的需要。
本文介绍的正是这样一种Web Services发现系统,此系统采用Struts基础构架实现,并充分利用了已经取得成果WODOS(Web Oriented Distributed Ontology System),展现了JAVA技术的可扩展性和可重用性。
2、Struts介绍
Struts是Apache公司Jarkata工程提供的开发Web应用程序的框架(Framework)。它具有组件的模块化,灵活性和重用性优点,同时简化了基于MVC的Web应用程序开发。Struts框架基于Java技术,Web应用程序开发人员通过Struts可以充分利用面对对象设计、代码重用以及“编写一次、到处运行”的优点。除此之外,Struts主要对应用程序页面显示、表示和数据的后台处理代码进行了抽象和分离,使得模块易于划分和管理,代码易于维护。
3、用MVC分析Struts
接下来从MVC(Model-View-Control)角度观察Struts框架中的组件:图1 Struts概览
MVC模式划分:
视图
Struts采用JSP作为视图。JSP页面使用定制标签,全部表单元素都使用定制标签 编码,这样页面能够很方便同控制器交互。每个表单都通过映射JSP到Servlet的请求这个方式指向一个控制器的特定入口。同时,Struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。
控制器
Struts中,基本的控制器组件是Struts中的Action,用Struts提供基类,负责视图和模型的交互。控制器的入口都由struts-config.xml的配置文件设置(由ActionMapping类进行描述)。该配置文件将来自JSP的请求映射到一个Sevlet类进行相应的处理,并制定下一个视图的位置。
模型
在Struts框架中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm、JavaBean表示。其中JavaBean有两种作用:一是存储来自客户端的请求(代表是继承ActionForm的子类);二是保存查询结果集,用于页面显示(代表是用户自定义的JavaBean)。根据设计或应用程序复杂度不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用;小型程序中,操作可能会被内嵌在Action类,它是Struts框架中控制器角色的一部分,仅当逻辑简单时适合。
4、Struts框架应用到WSIDS中
4.1 WSIDS登录主界面
图2 WSIDS登录主界面
从上图可以看到,进入WSIDS时,用户可以选择登录或是进行注册。如果是WSIDS用户登录,需要输入用户名和密码,验证合法才能进入功能操作主界面。这个界面对应了Struts框架里的一个ActionForm——loginForm,它由用户名(username)和密码(password)组成(这里本论文使用Struts中的html标签),并带有隐含值actionLogin,用于判断用户选择的是“登录”还是“注册”;同时,loginForm对应的动作(action)是login.do,(Struts中的转向页面均用.do表示)并且用户提交登录信息时,会进行有效性验证。
4.2 Struts配置
将Struts组件结合到一起靠配置文件struts-config.xml,它默认位置是WEB-INFstruts-config.xml,其中定义了全局转发、ActionMapping类、ActionForm bean和JDBC数据源。下面结合WSIDS登录,具体论述上述问题:
n 配置全局转发
全局转发用来在JSP页之间创建逻辑名称映射。转发都可以通过对调用操作映射的实例来获得。比如,我们设置了名为“notLogin”的全局转发名字,作用是一旦系统发现用户没有合法登录就试图进行操作时,激发的Action就会ActionMapping.findForward(“notLogin”);把用户操作的页面转向NotLogin.htm,避免其进行非法操作。
n 配置ActionMapping
ActionMapping对象帮助进行框架内部的流程控制,它们可将请求URI映射到Action类,并且将Action类与ActionForm bean相关联。ActionServlet在内部使用这些映射,并将控制转移到特定Action类的实例。所有Action类使用execute方法(Struts1.1)实现特定应用程序代码,返回一个ActionForward对象,其中包括响应转发的目标资源名称。由于WSIDS用户分三种角色,不用角色登录进入不同的功能操作主界面,因此当用户的用户名和密码验证成功,就会从数据库中查询出其角色,根据角色转向下一页面。
n 配置ActionForm Bean
ActionServlet使用ActionForm来保存请求的参数,这些bean的属性名称与HTTP请求参数中的名称相对应,控制器将请求参数传递到ActionForm bean的实例,然后将这个实例传送到Action类。比如Login.jsp中页面变量username和password在LoginAction中:
可直接获得变量值,便于在Action中进行操作。
n 配置JDBC数据源
用
n 配置消息资源
Struts框架对国际化的支持是使用
为了实现国际化,所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。比如WSIDS的消息资源配置文件为ApplicationResources.properties,其对应的其他特定语言编写的资源文件名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。
WSIDS的资源配置文件ApplicationResources.properties中,其中和登录面相关的资源是:
这样做无疑使页面所显示的资源进行维护变得简单。
4.3其它页面
图3 管理员操作主页面和提交加入语义注解的WSDL文件页面
图4 浏览WSIDS服务库页面和基本本体浏览页面
图5 WSIDS用户注册页面和增加规则页面
图6 WSIDS服务查询请求界面和服务查询结果界面
5、WODOS介绍
WODOS(Web Oriented Distributed Ontology System),即面向web的分布式本体系统。它本身是完全采用JAVA编写的一个语义Web支撑平台,具有以下功能:支持中英文,可以将本体信息存于关系型数据库中,支持RDF/OWL文件的导入导出,支持RQL查询,第三方软件可以通过OdoAPI进行操作。还引入推理机制,可以对存于WODOS中的本体事实施以规则(基于F-Logic),并在这些规则的基础上进行推理。WODOS建立了统一的用户界面,可以把对它的各种操作(如原有的RQL查询、RDF文件导入导出和新加入的F-Logic操作等)集成在一起。
WSIDS系统就是基于WODOS系统提供的语义Web基本功能,在Web Services发现的应用方向上进行了一个有机的结合,这也充分体现出JAVA本身的可扩展性和可重用性。
6、结束语
本文通过对WSIDS系统的介绍,展示了Struts基础构架的应用,并且基于已有的成果WODOS展示了JAVA技术的可扩展性和可重用性。并且由于JAVA的跨平台性,本系统可以运行于Linux、Windows的各种操作系统,采用Struts使得其操作简单,易于测试和维护。
参考文献
1. 徐剑军等,“基于本体的智能Web服务”,计算机科学,2002,第29卷第12期:92-94
2. James Hendler. “Agents and the Semantic Web” IEEE Intelligent Systems March/April 2001:30-37
3. Jeff Heflin and James Hendler. “A Portrait of the Semantic Web in Action” IEEE Intelligent Systems March/April 2001:54-59
4. Sheila A. McIlraith, Tran Cao Son and Honglei Zeng. “Semantic Web Service” IEEE Intelligent Systems March/April 2001:46-53
5. Tim Berners-Lee, James Hendler and Ora Lassila. “The Semantic Web”,SCIENTIFIC AMERICAN,May,2001:34-43
6. Omair Javed. “Semantic Web-Mobile Internet Technical Architecture”. Institute of Software Systems, Tampere University of Technology, 2003.5
7. T. Sollazzo, S. Handshuch, S. Staab, and M. Frank: Semantic Web Service Architecture– Evolving Web Service Standards toward the Semantic Web. Proceedings of the Fifteenth International FLAIRS Conference, Pensacola, Florida, May 2002.
8. Oussama Kassem Zein and Yvon Kermarrec. “An Approach For Describing/Discovering Services and For Adapting Them to the Needs of Users in Distributed Systems”. American Association for Artificial Intelligence,2004.