《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于JAVA实现基于本体的Web服务发现

基于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页面使用定制标签,全部表单元素都使用定制标签  编码,这样页面能够很方便同控制器交互。每个表单都通过映射JSPServlet的请求这个方式指向一个控制器的特定入口。同时,Struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。

*         控制器

Struts中,基本的控制器组件是Struts中的Action,用Struts提供基类,负责视图和模型的交互。控制器的入口都由struts-config.xml的配置文件设置(由ActionMapping类进行描述)。该配置文件将来自JSP的请求映射到一个Sevlet类进行相应的处理,并制定下一个视图的位置。

*         模型

Struts框架中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinFormJavaBean表示。其中JavaBean有两种作用:一是存储来自客户端的请求(代表是继承ActionForm的子类);二是保存查询结果集,用于页面显示(代表是用户自定义的JavaBean)。根据设计或应用程序复杂度不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用;小型程序中,操作可能会被内嵌在Action类,它是Struts框架中控制器角色的一部分,仅当逻辑简单时适合。

4Struts框架应用到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数据源

元素可以定义多个数据源。比如WSIDS使用了MySQL数据库的org.gjt.mm.mysql.Driver驱动程序,连接到名为kpsdb数据库上。 

n         配置消息资源

Struts框架对国际化的支持是使用标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来实现Java2平台对这些任务的支持。定义资源文件,其后缀名为properties,需要存储在类的路径下,而且它的路径要作为初始化参数传送给ActionServlet。 

为了实现国际化,所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。比如WSIDS的消息资源配置文件为ApplicationResources.properties,其对应的其他特定语言编写的资源文件名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。 

WSIDS的资源配置文件ApplicationResources.properties中,其中和登录面相关的资源是: 

具体在Login.jsp中,作如下调用:

这样做无疑使页面所显示的资源进行维护变得简单。 

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.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。