论文部分内容阅读
目前,门户(Portal)在企业中获得了广泛的应用,Portal是一种web应用,主要用于构建分层次、个性化的信息和应用入口,将来自各个信息源的内容集成到一个web页面中,并为信息系统提供统一的表现层界面。Portlet是门户的核心组件,它是一个Java Web组件,Portal使用Portlet提供信息系统的表示层。当企业门户开发人员通过Portlet集成企业现有的应用系统时,为了提高信息服务效率,带来更好的用户体验,一些业务逻辑需要不同的应用之间进行互操作来协同完成,这说明Portlet之间需要某种互操作能力。但是现有的Java Portlet协议在Portlet互操作问题上存在缺陷,JSR168仅支持使用PortletSession这种非常简单的Portlet互操作方式,这种方式最大的缺点在于只有属于同一个Web应用的Portlets间才能共享属性,而且容易出现属性被误改而导致流程混乱等安全问题。JSR286 Portlet协议虽然提供了事件和共享呈现参数这两个新的特性用于祢补JSR168的不足,使得程序员可以通过发送事件和接收事件以及设置共享的呈现参数来实现Portlet之间的通信,但仍然存在配置工作量大、Portlets间所有的交互逻辑都要硬编码、协作模式单一等问题。
本文提出了一种基于本体的Portlet语义互操作方法,主要通过扩展Portlet生成的标记片段及JSR286 Portlet协议提供的Portlet过滤器来获得Portlet间的互操作能力,并且不需要对集成的应用或服务做任何修改。其基本思想是:将参与互操作的Portlet在Portlet过滤器中通过解析标记语言代码片段和属性特征提取输入/输出数据的相关信息,然后将输入/输出数据映射到本体库中,从而完成自动注册Portlet的语义信息。接着基于本体建立输入和输出数据之间的语义关联,进行相应的数据转换,根据转换结果扩展Portlet生成的标记片段实现Portlet互操作。最后,采用Apache Pluto2.0+Tomcat6.0作为Portal服务器和Portlet的容器实现了本文提出的基于本体的Portlet语义互操作方法,实验证明该方法有效地解决了现有的Java Portlet协议在Portlet互操作问题上存在的缺陷。