计算机系统应用2010
url转向 时间:2021-01-26 阅读:(
)
年第19卷第10期52研究开发ResearchandDevelopment一种多Portlet互操作框架①刘高嵩卢维龙军(中南大学信息科学与工程学院湖南长沙410075)摘要:企业信息Portal作为企业信息集成的工具,主要是基于Portlet在表现层进行集成.
这种集成实质上就是Portlet之间数据交互问题.
在分析现有数据交互方法基础上,遵循JSR-168和WSRP规范,通过扩展Portlet实现接口,提出了多Portlet数据交互框架,并基于XML技术封装交互信息,实现Portlet之间信息交互.
关键词:门户;企业信息集成;数据交互;Portlet规范;WSRP规范FrameworkofMulti-PortletInteractionLIUGao-Song,LUWei,LONGJun(InstituteofInformationScienceandEngineering,CentralSouthUniversity,Changsha410075,China)Abstract:Portalsareameansintegratingentergrationinformationthroughaportlet,whichisapresentationcomponent.
Itistheessenceofdatainteractionbetweenportlets.
Thispaperproposesanapproachforextendingtheinterfaceofaportletandimplementingaportletcooperationbysupportingthecommunicationbetweenportlets.
TheapproachisbasedonanestablishedportletSpecification,aWSRPSpecification,andananalysisofexistingdataexchangemethods.
ThisapproachallowstheexchangemessageofstructuredXMLbetweenportletstocompletetheworktogether.
Keywords:portal;enterpriseinformationintegration;datainteractive;portletspecification;WSRPspecification1引言企业信息集成是信息技术的研究热点.
企业信息门户为企业应用集成提供了重要的途径,Portal作为企业信息门户,集成各种应用,为信息整合提供个性化交互统一平台.
Portal的核心技术是Portlet组件,Portlet是可复用的Web组件,它由Portlet容器进行管理,接收来自Portal容器的请求并进行处理,产生信息片断,然后Portal服务器聚集片断形成Portal页面[1].
JSR-168和WSRP规范是Portal的两个主要标准.
企业信息集成是将企业内部或企业之间不同企业应用系统的数据和业务处理整合起来,实现跨越应用系统边界集成,同时还要保留原有应用系统,实质上就是实现多个应用系统间互通互联[2].
Portal作为一种企业信息集成的工具,主要是利用Portlet集成来实现企业信息集成.
这种集成实质是通过Portlet之间进行数据交互通信来实现.
但JSR-168并没有明确定义数据如何在多Portlet间传递的互操作.
目前JSR-168支持使用PortletSession这种简单的通信方式,即向PortletSession中添加参数parameter并将该参数的Scope属性设置为APPLICATION-SCOPE,使得所有Portlet都能读写该parameter,从而通过共享PortletSession实现通信[3].
当前主流门户产品在Portlet交互方面大多采用类似方法实现数据传递,如Oracleportal通过页面参数传递的方法进行Portlet交互协作.
首先,在①基金项目:国家自然科学基金(60873081,M0921005,U0835003);高等学校博士学科点专项科研基金(20090162110072)收稿时间:2010-01-15;收到修改稿时间:2010-03-182010年第19卷第10期计算机系统应用ResearchandDevelopment研究开发53Portal页面建立页参数相当于页面的全局变量,然后在Portlet中设置Portlet参数,并与页面参数建立对应的关联关系,Portlet的参数传递到页面的全局参数是通过事件来传递[4].
通过PortletSession实现数据交互,实质是一种参数值传递,值传递方法可以很好的解决同一Portal页面的交互协作问题,但是该方法存在以下不足:首先当页面内容庞杂时,大量属性信息修改容易引发逻辑错误导致程序混乱;其次这种协作方式仅仅适用于同一系统中的Portlet之间传递简单的交互数据;最后这种方式并不支持与部署在远程服务器上的Portlet之间的通信.
这种应用相当有限,无法从根本上满足当前门户在应用向集成化和协作化方向发展的要求.
因此研究Portlet间的数据交互很有必要.
2多Portlet互操作框架设计Portlet交互协作是指多个Portlet之间进行协作完成某项业务,即用户的一个请求数据能够得到一组Portlet响应[5].
许多应用需要大量Portlet进行交互,例如在一个应用系统里面,有3个Portlet分别是A、B和C.
其中A显示有关账户的概要信息,B显示在过去20天内有关账户发生的所有事务信息,而C显示某一特定账户的详细信息.
这是一个简单的Portlet交互协作应用场景.
为实现Portlet交互需要解决如下问题:①支持跨越应用系统边界的通信;②与远程Portlet进行通信并支持异构系统;③在Portlet之间支持1:N通信,而且能够传送复杂数据;④必须考虑系统可重用性,可移植性以及对已存组件的集成问题.
参考当前Portal中Portlet的交互协作的设计思路,依赖Portlet和WSRP规范的核心特征,扩展Portlet实现接口,提出多Portlet数据交互框架,基于XML封装技术在Portlet之间进行复杂数据交互,实现Portlet间信息交互,达到集成目的,同时保证系统的灵活性和扩展性.
2.
1扩展标准Portlet为增强Portlet之间交互协作,充分利用Portlet规范,对标准Portlet进行扩展:增加了输出端口和输入端口的概念、一个Message类和扩展公共接口GenerateMarkup.
输出端口表示数据源Portlet要传送的数据;输入端口表示目标Portlet准确接收数据的验证数据结构;Message是一个简单的javabean,它的作用是对源Portlet传送的数据进行封装,表示数据输出端口结构;GenerateMarkup接口提供一个embXMLasNote(Messagemsg)方法,该方法是将Message对象使用XML来表示,返回值是一个字符串.
自定义Portlet通过继承Portlet规范中的GenericPortlet抽象类并实现GenerateMarkup接口.
当该Portlet接收到请求后,进行响应处理,如果需要提供交互数据,则将交互信息以Message形式表示,再将该Message以形参方式传递给embXMLasNote方法产生字符串,然后将字符串以注释的形式嵌到由GenericPortlet接口的render方法形成html片断.
数据输出端口结构包括name、message_type、broadcast、generatemarkupnested、message和to_portlets六个数据项组成,各数据项的具体意义由图1所示.
为了保证Message能够被Portlet准确地接收,仅仅靠输出端口中的name和to-portlets是不够的,为此提出了数据输入端口.
数据输入端口由name、from-portlets、message-type和action四个数据项组成,各数据项具体含义如图2所示.
数据输入端口以XML文件存在,其主要作用是匹配输出端口中的name和to-portlets,确保Portlet的action能够准确接收数据.
由上可知数据源输出端口通常嵌套在Portal页面的html标签中,这意味着数据源Portlet的输出端口能够在每个显示的页面中进行修改.
图1显示输出端口的XML描述,将以注释的形式内嵌在HTML.
标记和可以确定相互关联的Portlet;标记中包含该Portlet要传送的数据;标记定义传送数据的具体类型.
图1显示两个Portlet之间数据交互关系,其中org.
ssh.
personData为org.
ssh.
showPersonData提供用户详细信息.
图1输出端口xml描述计算机系统应用2010年第19卷第10期54研究开发ResearchandDevelopment数据输入端口同样用XML进行描述并保存在独立描述文件中,可以通过URL进行访问.
图2显示简单输入端口XML描述文件.
输入端口除了包含端口名字和类型外,还包括了action属性,用于确定这个输入端口由哪个action接受数据,该action标记依赖于数据接收器实现的具体分发机制.
图2表示由org.
ssh.
personData传送过来的数据被org.
ssh.
showPersonData的showData方法接受.
图2输入端口xml描述自定义Portlet通过继承Portlet规范中的GenericPortlet抽象类并且实现GenerateMarkup接口的方式提供数据输出端口,可以通过标记与在Portlet间建立1:N数据交互关系,标记进行封装传送的数据,利用标记确定交互数据具体类型,通过这种方式可以支持Portlet间的数据交互.
输入端口利用与标记确保数据可以被正确的Portlet接收起验证作用.
输出和输入端口采用XML描述是由于XML可以在不破坏原有信息内容的同时,可以自由定义、扩充、修正标记和文档结构,以满足不断变化的应用需求,实现异构系统间的信息表示、交换和集成.
2.
2多Portlet互操作框架Portal服务器是J2EEWeb服务器,它允许将Web应用程序部署在Servlet容器,该容器为Web应用程序的每个组件定义并维护运行环境,组件共享用户会话状态和全局应用状态.
Portal可以看作一个特殊web应用,它由Servlet容器,Portal应用服务程序,Portalweb应用和Web应用四部分构成.
为了支持扩展的Portlet组件之间交互,在Portal应用服务程序中增添了四个额外组件:数据过滤服务组件、PortalDispatchServlet、注册器Servlet和数据缓存如图3所示.
图3数据交互服务体系框架结构由2.
1及图3可知Portlet可以分为三种类型:充当数据源的Portlet、目标Portlet用于接收数据以及代理Portlet用于代理远程Portlet.
所以该Portal应用服务程序处理的数据结构主要是输入和输出端口.
具有数据交互功能的扩展Portlet跟其他Portlet一样也是由Portlet容器进行管理.
新增组件功能如下:PortalDispatchServlet组件:接受页面请求,然后根据页面配置文件,将请求转发到Portlet容器由具体的Portlet进行处理,将Portal页面返回给数据过滤服务组件.
数据交换过滤服务组件:负责对返回的Portal页面进行分析和转换工作.
主要是抽取源Portlet产生的片段,形成一个独立数据输出端口XML文件存放在应用服务程序的temp文件夹下,该temp文件能够被不同系统边界中的Portlet应用程序访问并利用XML解析器对该临时文件进行解析;在原来数据输出端口位置将用一个URL和一个应用菜单生成逻辑所代替,其中URL指向数据接收器Portlet的地址,而插入的应用逻辑主要是根据标记产生一个可供选择的导航菜单,通过用户交互的方式,触发解析数据输出端口描述文件与数据输入端口描述文件进行匹配,若匹配成功则将数据传送到用户选择的Portlet处理.
数据过滤服务组件是新增组件中最重要也是最2010年第19卷第10期计算机系统应用ResearchandDevelopment研究开发55复杂的一部分,其结构如图4所示.
图4数据交换过滤服务组件结构注册器Servlet组件:负责登记第一次被请求的Portlet信息,以及将数据过滤服务组件对页面分析和转换后的信息进行登记.
数据缓存:主要是用于缓存已经使用过的Portlet信息以及Portlet之间的数据交互关系.
带有扩展服务器组件的Portal请求响应处理主要步骤:①客户端浏览器向Portal服务器发送一个page请求,经验证通过后将请求交给数据交换过滤服务组件;②Portalweb应用服务程序中数据交换过滤服务暂时接收该Page请求,然后传送到PortalDispatchServlet;③PortalDispatchServlet读取页面配置文件,判断请求是否包含与组成门户网站网页的Portlet有关动作;④如果存在与某Portlet相关动作,DispatchServlet将该请求分发到Portlet容器调用相应的Portlet处理请求;⑤Portal通过Portlet容器调用Portlet,产生该请求的响应数据,若有数据交互的操作,则将使用GenerateMarkup中的embXMLasNote方法将交互数据嵌入到内容片段;否则直接产生内容片断;⑥Portal通过frame将产生的结果聚集于门户网站的网页,然后将网页返回到数据交换过滤组件;⑦数据交换过滤组件将对网页进行分析和转换操作并判断此次请求页面中的Portlet是否为第一次请求;分析网页中是否存在数据输出端口注释,如果存在则将该端口抽取形成xml临时文件存放在temp文件夹下;并在输出端口的位置用URL和一个处理逻辑代替,其作用已在上面提过不再赘述;⑧如果portlet是第一次请求则将该Portlet由注册器Servlet进行登记;⑨将分析和转换操作的结果和注册器的内容存入数据缓存;⑩数据交换过滤组件将处理后的网页重新组装返回客户端.
具有数据交互功能的Portlet注册数据源与数据接收器的处理时序如图5所示.
浏览器将页面请求发送到Portal服务器;Portal服务器组装Portlet产生的片断形成页面;将该页面返回给过滤组件,过滤器抽取Portlet的信息和输入输出端口,输出端口由URL代替,并确定使用该数据的Portlet;Registry注册Portlets、ports和URL,并将这些信息存入Cache;最后Filter将处理后的页面返回给浏览器运行.
图5注册数据源与数据接收器为了能集成远程Portlet,扩展Portlet组件同时也遵循WSRP规范.
远程Portlet通过代理Portlet充当WSRP消费者进行集成.
它们既可以作为数据源也可以当作数据接收器.
此时对于远程Portlet需增加额外数据项该Portlet的地址,它和输出端口描述都将嵌入到Portlet生成的片断,并通过WSRP协议中的getMarkup方法获得.
将数据发送到远程Portlet利用SOAP协议发送给Portlet的ActionURL,通过WSRP协议中的performBlockinginteraction方法调用结果[6].
3分析首先自定义Portlet通过继承Portlet规范中的GenericPortlet抽象类并且实现GenerateMarkup计算机系统应用2010年第19卷第10期56研究开发ResearchandDevelopment接口的方式提供数据输出端口,利用Message对象封装,并将其作为参数传递给embXMLasNote方法,最后将输出端口以注释形式写入片断中.
Portal将所有片断组装成一个完整的页面,返回给数据过滤服务组件,数据过滤服务组件将识别嵌入在片断中的注释并进行抽取形成一个独立的xml文件存放在portal服务器中的temp文件夹下,这样不论是否为同一系统中的Portlet均可访问这些文件,数据接收器可以解析该temp下的xml文件并与自身预先定义的输入端口文件匹配确定交互数据是否由该接收器接收,这样就可以实现跨越系统边界的通信交互.
其次数据输出端口的数据结构可以表示在Portlet之间进行1:N通信,而且能够传送复杂数据.
由于数据输出端口是基于XML技术表示,可以利用XML在不破坏原有信息内容的同时,自由定义、扩充、修正标记和文档结构,以满足不断变化的应用需求,实现异构系统间的信息表示、交换和集成不断变化.
最后在Portal应用服务程序中提供的4个组件部署在Servelt容器,与Portlet容器基本上是独立的,这样有利于降低与Portlet容器的耦合,可以实现系统的灵活性、扩展性和重用性.
由于对Portlet扩展的实现接口是在Portlet规范和WSRP规范基础上进行扩充,因此可以对标准Portlet以及远程Portlet进行集成.
4结束语企业信息集成是当今信息技术的研究热点,企业信息门户是企业信息集成的重要工具,利用Portal进行信息集成的实质就是Portlet间的信息交互问题.
本文分析了目前主流Portlet交互的常用方法以及它的局限性,遵循JSR-168和WSRP规范,并依赖这些规范的核心特征,通过实现GenerateMarkup接口,扩展Portlet的实现,提出输入和输出端口的概念以及多Portlet数据交互框架,并基于XML封装交互信息,实现Portlet间信息交互,协同完成业务工作,达到企业信息集成目的.
该方法优点是通过扩展Portlet组件实现集成方式简单,可以跨越系统边界传送复杂的数据,支持远程Portlet通信,具有很好的灵活性、扩展性和重用性.
参考文献1JavaCommunityProcess.
TheJavaPortletSpecifica-tion(JSR168)[2009-9-12].
http://jcp.
org/en/jsr/detailid=168,version1.
0.
2五云庆,杨丹.
基于门户技术的EAI实现方法研究.
计算机工程与设计,2007,28(6):1418-1419.
3陈毓林.
Portlet协作框架研究.
北京:中国科学院软件研究所,2005:19-20.
4马将,聂瑞华等.
基于JetSpeed的多portlet流程协作机制研究与应用.
计算机系统应用,2009,18(4):70-71.
5马增辉,解建仓等.
一种多Portlet之间交互方法的研究.
计算机工程,2007,33(13):242-243.
6OASISWebServicesforRemotePortlets(WSRP)Specification
欧路云 主要运行弹性云服务器,可自由定制配置,可选加拿大的480G超高防系列,也可以选择美国(200G高防)系列,也有速度直逼内地的香港CN2系列。所有配置都可以在下单的时候自行根据项目 需求来定制自由升级降级 (降级按天数配置费用 退款回预存款)。由专业人员提供一系列的技术支持!官方网站:https://www.oulucloud.com/云服务器(主机测评专属优惠)全场8折 优惠码:zhuji...
火数云怎么样?火数云主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、专属服务器托管、带宽租用等产品和服务。火数云提供洛阳、新乡、安徽、香港、美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经...
10gbiz怎么样?10gbiz在本站也多次分享过,是一家成立于2020的国人主机商家,主要销售VPS和独立服务器,机房目前有中国香港和美国洛杉矶、硅谷等地,线路都非常不错,香港为三网直连,电信走CN2,洛杉矶线路为三网回程CN2 GIA,10gbiz商家七月连续推出各种优惠活动,除了延续之前的VPS产品4折优惠,目前增加了美国硅谷独立服务器首月半价的活动,有需要的朋友可以看看。10gbiz优惠码...
url转向为你推荐
dvdes-644DVDES-829第二位出场的女的叫什么名侦探柯南644名侦探柯南1~674集哪集很色郑州软银科技有限公司河南/郑州网站设计公司哪家做的最好呀?てっっっ滴滴软银合资嘀嘀打车是腾讯的还是阿里巴巴的美女桌面背景图片最漂亮的美女电脑壁纸哪里有?唐人社美国10次啦美国的10号码是我们中国多少码?免费阅读小说app哪个好有什么好用的看小说的app985和211哪个好985和211哪个强?具体分析点。传奇类手游哪个好什么传奇类手游好玩不坑钱?闪迪和金士顿哪个好固态硬盘哪个好,是金士顿好还是闪迪的
免费云主机 域名投资 南通服务器租用 域名空间购买 2019年感恩节 新世界机房 highfrequency 加勒比群岛 winhost 日本空间 网站挂马检测工具 好看qq空间 qq数据库下载 福建天翼加速 全站静态化 e蜗 免费防火墙 卡巴斯基免费试用版 空间购买 监控服务器 更多