Portal包括:
(1) Portal Server。『Portal Server是基于WEB的应用程序, 它将不同资源进行整合并展现给用户。有些文章直接把Portal Server叫做Portal,请注意。』
(2) Portlet Container。『Portlet Container用来管理Portlet的生命周期并且提供其运行所需要的必要环境. 并且为Portlet Preferences提供持久性(Persistent)存取服务.但是其不支持内容的Aggregation. Aggregation由Portal组件提供.』
(3) Portlet。『Portlet 是以
Java
技术为技术的 web 组件,可以被容器管理,可以产生动态内容。处理请求并动态返回页面, 可以做为Portal 的可拔插的用户界面组件.』
我们需要Portal的目的就是要做到系统功能与模块的可配置。同时要开源并符合标准。能与其他的系统进行结合比如Struts。
目前比较主流的Portal产品:
Apache Jetspeed(http://jakarta.apache.org/jetspeed/)
Liferay(http://www.liferay.com)
EXOportal(http://cvs.sf.net/viewcvs.py/exo/ExoPortal/)
Pluto(http://jakarta.apache.org/pluto)
BEA WebLogic Portal (http://edocs.bea.com/wlp/docs81/javadoc/com/bea/portal/model/Portlet.html )
IBM Websphere Portal (http://www.software.ibm.com/wsdd/zones/portal/ )
Oracle Portal Developer Kit (http://portalstudio.oracle.com/)
jfoxportal(http://www.huihoo.org/jfox/jfoxportal/index.html 刚提出草案,不过是国内的。)
说Portal,就不能不提JSR#168 Portlet。
JSR 是由 JCP (
http://www.jcp.org/
) 这个
Java
组织所定义出来的规范。JSR#168规范就是一个关于Portlet的规范 ——Portlet Spec 1.0 。既然有了规范,理所当然的之后的产品就应该按照这个规范来制作。
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。官方支持列表甚至更长。
客户端请求由
Portal Web
应用程序进行处理,它为当前用户检索当前页上的
Portlet
。然后,
Portal Web
应用程序为每个
Portlet
调用
Portlet
容器来通过
Container Invoker API
检索它的内容。
Portlet
容器通过
Portlet API
调用
Portlet
。
Container Provider Service Provider Interface
(
SPI
)允许
portlet
容器通过
Portal
检索信息。
Portlet
窗口包括:
l
标题栏,带有
Portlet
的标题
l
修饰,包括用于更改
Portlet
的窗口状态的按钮(比如最大化或最小化
Portlet
)和用于更改
Portlet
的模式的按钮(比如显示帮助或编辑预定义的
Portlet
设置)
l
由
Portlet
产生的内容(也称为一个标记段)。
下面是典型的事件流程,当用户访问
portal
页面的时候:
<!--[if !supportLists]-->² <!--[endif]-->客户端在验证后向portal发http请求。
<!--[if !supportLists]-->² <!--[endif]-->portal接收请求。
<!--[if !supportLists]-->² <!--[endif]-->portal判断是否有包含请求,并请求包含的动作指向的portlet是和这个portal页面相关联的。
<!--[if !supportLists]-->² <!--[endif]-->如果含有动作的目标portlet,portal发请求给portlet容器去执行相应的portlet的动作。
<!--[if !supportLists]-->² <!--[endif]-->portal通过portlet容器调用portlets,去获得内容片断,这个片断可以包含在portal页面中。
<!--[if !supportLists]-->² <!--[endif]-->portal集合portlets的输出内容到1个portal页面中,并把页面返回客户端。
Portlet
产生标记片断。
Portal
通常给
portlet
产生的标记片断加了标题,控制按钮和其他的装饰,这个新的片断叫
portlet
窗口。然后
portal
整合
portlet
窗口到完整的文件,
portal
页面。
<!--[if !vml]--><!--[endif]-->
Portlets
运行在
portlet
容器内。
Portlet
容器接收
portlets
产生的内容。典型的,
portlet
容器把
portlet
内容传到
portal
。
Portal server
根据
portlet
产生的内容创建
portal
页面,并传送给客户端,由客户端显示。
lt;!--[if !vml]--><!--[endif]-->
客户使用客户终端访问
portal
。在收到请求后,
portal
判断满足请求的
portlets
列表。
Portal
通过
portlet
容器,调用
portlets
。
Portal
用
portlet
产生的片断创建
portal
页面,同时把页面返回给用户。
<!--[if !vml]--><!--[endif]-->
用户可以根据需要通过增删
Portlet
的方式配置他们的页面。在
Windows
或者
XWindows
窗口程序中,窗口有最大化和最小化的窗口状态,
portlet
也有窗口状态。
窗口状态是
portal
页面空间数量的指示器,它被赋值给
portlet
产生的内容中。当调用
portlet
,容器提供当前窗口状态给
portlet
。
Portlet
使用窗口状态决定多少信息需要
render
。
Portlets
能在处理
action
请求时,编程的改变他们的窗口状态。
Portlet
规范定义了
3
种窗口状态,
normal
,
maximized
和
minimized
。
Normal
窗口状态
Normal
窗口状态表示
portlet
要和其他的
portlet
共享页面。它也表示目标设备限制了显示能力。因此,
portlet
限制输出的尺寸。
MAXIMIZED
窗口状态
Maximized
窗口状态表示
portlet
是
portal
页面唯一的
portlet
,或
portlet
相比与其他的
portlet
有更多的空间。当窗口状态是
Maximized
时,
portlet
产生更多的内容。
Minimized
窗口状态
当
portlet
是
minimized
状态,它将是最小限度的输出,或不输出。
Portlet
模式指出
porlet
的功能。一般来说,
portlet
执行不同任务,依靠当前执行的任务的创建不同内容。
Portlet
模式告诉
portlet
他们执行什么任务,生产什么内容。当调用
portlet
,容器提供当前
portlet
模式给
portlet
。
Portlets
在处理
action
请求时能编程的改变他们的
portlet
模式。
Portlet
有四种模式:
view
,
edit, help
和
config
。
可用的模式根据用户的角色受到限制。例如,匿名用户只能使用
view
和
help
模式,而验证用户可以使用
edit
模式。
举例来说,一个用户可以定制的股票信息Portlet,View模式允许用户查看股票列表,Help模式提供给用户帮助手册,Edit模式允许用户定制自己关注的股票列表,而Config模式允许管理员改变股票服务的一些配置。
VIEW
模式
View
模式期待的功能是产生标记反映当前的状态给portlet。例如,view模式的portlet包含1个或多个框,用户可以操作或交互,或组成不需要任何用户交互的的静态内容。
Portlet
开发者需要通过覆盖doView方法实现view portlet模式的功能。
EDIT
模式
通过edit模式,portlet提供内容和logic让用户用户化portlet的行为。Edit模式包含一个或多个框,用户可以定位并输入他们的用户化数据。
典型的,edit模式,将设置或修改portlet的参数。Portlet开发者需要通过覆盖doEdit方法实现edit portlet模式的功能。
HELP
模式
当在help模式,portlet提供portlet的help信息。这个help信息将会是简单的框,用连贯的正文或上下文敏感的帮助阐明了整个portlet。Portlet开发者需要通过覆盖doHelp方法实现help portlet模式的功能
CONFIG
模式
当在config模式,管理员可以进行相应的操作。
Portlet开发者需要通过覆盖doConfig方法实现view portlet模式的功能。
因为Portlet继承于Servlet,所以portlet可以打包成war文件发布到Portal容器中。管理员可以发布或者卸载portlet。在一个Portlet Web 应用中,一个portlet描述文件用来描述portlet的属性和初始化信息。一个Portlet定义包含一个application portlet和多个concrete portlet。一个Application Portlet在portlet容器中仅存在一个实例。一个concrete Portlet实例一个使用额外的数据实例化的portlet。
posted on 2007-01-23 09:42
周锐 阅读(566)
评论(0) 编辑 收藏 所属分类:
Portal