--了解规范的根本术语和概念
Portlet是基于java的web组件,由portlet容器管理,并由容器处理请求,生产动态内容。Portals使用portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用servlets进行web应用编程的下一步,portlets实现了web应用的模块化和用户中心化。portlet规范,即jsr(java specification request)168,是为了实现portal和portlet的互操作。它定义了portlet和portlet容器之间的和约,让portlet实现个性化、表示和安全的api集。规范还定义了怎样在portlets应用中打包portlets。本系列的
第一部分描述了portlet规范,并解释了其中的根本概念。第二部分中,笔者解释了规范的参考实现和一些portlet实例。
随着企业级portal的大量涌现,不同提供商创建了不同的portal组件api,即portlet。不同的不兼容给应用服务商,portal用户和portal server提供商都造成了问题。为了消除这些问题,jsr168,即portlet规范提出,从而提供portlet和portal间的互操作性。jsr168定义,portlet是基于java的web组件,portlet容器处理request并生成动态内容,管理portlet。portal使用portletportlet作为可插入用户接口组件,提供信息系统的表示曾。
jsr168的目标是:
定义portlet的运行时环境,即portlet容器
定义portlet和portlet容器之间的api集
提供portlet存储易失数据和持久数据的机制
提供portlet包含servlet和jsp的机制
定义方便部署的portlet打包方法
提供jsr168规范下的portal的二进制portlet便携性
通过WSRP(web service for remote portlet)协议运行符合jsr168规范的远程portlet
IT界已经广泛的接受了jsr168规范。所有的portal领域主要公司都是jsr168专家组的成员:Apache,AGT,BEA,Boeing,Borland,Broadvision,Citrix,EDS, Fujitsu, Hitachi, IBM, Novell, Oracle, SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO, and Vignette。官方支持列表甚至更长。
当前,jsr168正在进行公众审视,最终版本将在2003年九月发布。
本文中,首先定义了portal和portlet,然后解释了jsr168的概念,包括api的基本对象。接下来,深入到jsr的高级功能,比如用户信息,本地化和缓存。然后讲到了扩展,从而使portal提供者扩展当前portlet规范的函数功能。本文包含了portlet应用的打包和部署。
这部分中,讲讲述portlet规范中的基础定义,包括portal基本构架,portlet容器和portal页面。
portal
portal是一个基于web的应用,它能提供个性化,单点登陆,不同源的内容聚合,和信息系统的表示曾集中。聚合是整合不同web页面源数据的过程。为了提供用户定制的内容,portal可能包含复杂的个性化特征。为不同用户创建内容的portal页,可能包含不同的portlet集。
图1表示了portal的基本架构。portal web应用处理客户请求,找回用户当前页中的portlet,然后调用portlet容器,从新获取各个portlet的内容。portlet容器提供portlet的运行时环境,并通过portlet api调用portlet。portal通过portlet invoker api调用portlet容器。portlet容器通过portlet provider spi(service provide interface)获取portal信息。
图2表示了基本的portal页面组件。portal页面本身代表一个完整的标记文档,并且聚集了一些portlet窗口。除portlet外,页面可能还包含导航区合标志区(navigation area and banners)。一个portlet窗口包含一个标题栏,装饰,和portlet产生的内容。装饰可以包括改变portlet窗口状态和模式的按钮(后文将解释这些概念)。
portlet
正如上文所说,portlet是基于java的web组件,处理request并产生动态内容。portlet产生的内容称为片段,即一段遵守中心规则的标记(比如html, xhtml,wml(无线标记语言))。如图三所示,多个片段可以聚合成一个完整的文档。多个portlet聚合在以期,组成portal页。portlet容器控制portlet的生命周期。
web客户通过portal实现的request/response范例与portlet交互。通常,portlet中的动作会被portal接受,从而用户与portlet中的内容交互(比如点击portlet中的链接,提交form),提交到portlet的目标。
对不同的用户,根据其配置,同一个portlet会产生不同的内容。
portlet容器
portlet容器提供它们需求的运行时环境并运行portlet。它包含portles并控制它们的生命周期。容器提供portlet参数的持久存储机制,它接受来之portal的request,并在其持有的portlet上执行request。容器不负责portlet产生内容的聚合,portal自己处理内容聚合。
portal和portlet容器可以作为应用套件构建在一起,也可以做为组件各自单独发布。