庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

portal学习(一)抄书

Posted on 2007-07-15 20:16 dennis 阅读(1355) 评论(2)  编辑  收藏 所属分类: java
    这两天将网上下载的《JSR168 porlet标准手册汉化整理》和《Liferay Portal二次开发指南》认认真真地看了几遍,看了BEA站点上portal的getting start,写了hello world,算是正式开始学习portal了。感谢这么多人无私地分享知识。抄书。

第一节 Portal 规范
随着Portal 的兴起,越来越多的公司开始涉足Portal 产品开发,并组建各自的Portal 组
件和基于其的产品,比如IBM、BEA、MicroSoft、SAP、Apache 等。各个厂商的接口互不
兼容,给软件开发商以及开发人员带来诸多不便。
1.1.1 JSR168
为此,JCP 组织发布了JSR168(Java Specification Request),Portlet Specification V1.0,
用来提供不同的Portal 和Portlet 之间的互通性。只要开发的Portlet 遵循JSR168,则就可以
在所有遵循JSR168 的Portal 上部署运行。
JSR168 中定义了Portal 的实现规范和接口,并对理想的Portlet 进行了详细的规划和描
述。
1.1.2 WSRP
WSRP 是OASIS Web Service for Remote Portlet 的缩写。WSRP 是Web Service 的一种新
的商业应用,一种新的标准,主要用来简化Portal 对于各种资源或者程序整合的复杂度,可
以避免编程带来的整合麻烦和问题。而且Portal 管理员可以从海量的WSRP 服务中选择需
要的功能用以整合到目前所用的Portal 中。它有三种角色:
①、生产者 􀃆 提供Portlet
②、消费者 􀃆 使用Portlet
③、终端用户 􀃆 最终用户
它的特点在于生产者将消费者所需要的信息通过WSRP 返回给消费者,这些信息是相对
标记片断,例如HTML、XHTML 等,可以直接嵌入用户的页面中,而不用像Web Service
一样开发用户端接口。
实现这个规范,Portal 可以跟各式各样的数据源打交道,彻底终结信息孤岛的窘境。
第二节 什么是Portal
Portal 是基于Web 的,以“应用整合”和“消除信息孤岛”为最终目的,提供单点登
录、内容聚合、个性化门户定制等功能的综合信息系统。
完整的Portal 通常由Portal 服务器、Portlet 容器、Portlet 构成。
1.2.1 Portal 服务器
Portal 服务器是容纳Portlet 容器,支持Portlet 呈现的普通或者特殊Web 服务器。
Portal 服务器通常会提供个性化设置、单点登录、内容聚合、信息发布、权限管理等功能,
支持各种信息数据来源,并将这些数据信息放在网页中组合而成,提供个性化的内容定制,
不同权限的浏览者能够浏览不同的信息内容。通常,Portal 提供以下功能:
单点登录:Portal 通常采用ACL、SSL、LDAP 等业界标准的安全技术,提供对所有现有
应用系统的安全集成,只需在Portal 的唯一入口上登录一次,就可以访问所有应用系统和
数据。对于安全性要求较高的应用系统,如电子商务平台、交易系统等,通过扩展接口传递
用户身份信息,如数字证书信息、数字签名信息等,进行二次身份认证,保证单点登陆的安
全性。
权限控制:系统采用LDAP 对用户资源进行统一的管理,同时提供二次开发接口,可以
与其他应用系统的用户管理模块对接,并能随相关业务系统实时更新访问权限。通过完善的
授权机制及存取控制,用户访问权限控制到字段级别,确保用户只能访问具有权限的应用系
统及相关信息。
内容管理: 实现应用系统之间实时交换信息。采用多种缓存机制,保证内容交换的性能
和准确性。采用基于XML 的Rich Site Summary (RSS)标准,迅速在各应用系统之间传播最
新变化。
信息发布: 实现信息门户内容的动态维护。动态网站系统可与OA 协同办公系统、知识
管理系统等集成,网站信息须经OA 系统的审批流程流转通过后或知识管理平台设置具有外
部共享权限后才可正式发布,真正实现内外信息发布的同步。
文件管理: 系统实现无缝集成多种数据源,包括:数据库、文档(Office 文档、PDF、
AutoCAD、甚至ZIP 文档)、Web 网页、FTP 站点等,并对数据按业务要求和职务特点加以分
析整理,通过统一Web 界面主动推送(Push)至用户的门户桌面,帮助用户做出及时、正确的
决策。
1.2.2 Portlet 容器
Portlet 容器提供Portlet 执行的环境,包含很多Portlet 并管理它们的生命周期,保
存Portlet 的定制信息。
一个Portal 容器接收到来自Portal 的请求后,接着将这个请求传递给存在Portal 容
器的Portlet 执行。Portlet 容器没有义务去组合Portlet 产生的信息內容,这个工作必
须由Portal 来处理。Portal 和 Portal 容器可以放在一起视为同一个系统的组件,或者分
开成为两个独立的组件。
Portlet 容器是普通Web Servlet 容器的扩展,所以一个Portlet 容器可以构建于一个
已经存在的Servlet 容器或者可能实现全部Web Servlet 容器的全部功能。无论Portlet
容器怎么实现,它的运行环境总是假定它支持Servlet2.3 规范。

通常,Portlet 容器扩展自普通的Servlet 容器。
第三节 什么是Portlet
Portlet 是Portal 中最重要的组件,负责在Portal 中呈现信息内容,有相应的生命周
期。通过自定义Portlet,用户很容易定义个性化的Portal 页面。Portlet 由Portlet 容器
负责管理、处理请求并返回动态页面,可以作为Portal 的可即插即用的界面组件。
1.3.1 Portlet
一个Portlet是以Java技术为技术的Web组件,由Portlet容器所管理,专门处理客户的
信息请求以及产生各种动态的信息内容。Portlet 为可插式的客户界面组件,提供呈现层成
为一个信息系统。
这些由Portlet产生的内容也被称为片段,而片段是具有一些规则的标记( HTML、XHTML、
WML ),而且可以和其他的片段组合而成一个复杂的文件。一个或多个 Portlet 的内容聚合
而成为一个 Portal 网页。而 Portlet 的生命周期是被 Portlet 容器所管理控制的。
客户端和Portlet的互动是由Portal通过典型的请求/响应方式实现,正常来说,客户会
和Portlet所产生的内容互动,举例来说,根据下一步的连接或者是确认送出的表单,结果
Portal将会接收到Portlet的动作,将这个处理状况转向到目标Portlet。这些Portlet 内容
的产生可能会因为不同的使用者而有不同的变化,完全是根据客户对于这个Portlet的设置。
1.3.2 Portlet 与Servlet 的关系
Portlet 被定义成为一个新的组件,具有新的明确的界面与行为。为了尽可能与现有的
Servlet 结合达到重复使用的目的,Portlet 的规范利用了 Servlet 的规范,许多观念都
很相似的,结合 Portlet、Servlet 及 Jsp 在同一个网站系统中,我们称为Portlet 应用 。
在同一个 Portlet 应用 中,他们将分享同一个类加载器(ClassLoader),上下文(Context)
及 Session。
①、Portlet 和 Servlet 的相似之处
@ Portlet 也是 Java 技术的 web 组件
@ Portlet 也是有特定的 container 在管理
@ Portlet 可以动态产生各种内容
@ Portlet 的生命周期由 container 所管理
@ Portlet 和客户端的互动是通过 request/response 的机制
②、Portlet 和 Servlet 也有一些不同
8
@ Portlet 只产生 markup 信息片段,不是完整的网页文件。而 Portal 会将所有的
Portlet markup 信息片段放到一个完整的 Portal 网页。
@ Portlet 不会和 URL 有直接的关系
@ 客户端必须通过 portal 系统才能和 Portlet 互动
@ Portlet 有一些定义好的 request 处理,action request 以及 render request。
@ Portlet 默认定义 Portlet modes 及窗口状态可以指出在网页中该 Portlet 的哪个功
能正在执行及现在的 状态。
@ Portlet 可以在同一个 portal 网页之中存在多个。
③、Portlet 有一些附加的功能是 Servlet 所没有的
@ Portlet 能够存取及储存永久配置文件及定制资料。
@ Portlet 可以存取使用者数据
@ Portlet 具有 URL 的重写功能在文件中去动态建立连结,允许 portal server 不用去
知道如何在网页的片 段之中建立连结及动作。
@ Portlet 可以储存临时性的数据在 Portlet session 之中,拥有两个不同的范围 :
application-wide scope 及 Portlet private scope 。
④、Portlet 不具有一些功能, 但是 Servlet 却有提供
@ Servlet 具有设置输出的文字编码( character set encoding)方式
@ Servlet 可以设置 HTTP 输出的 header
@ Servlet 才能够接收客户对于 portal 发出的 URL 请求
1.3.3 Portlet 的生命周期
一个Portlet有着良好的生命周期管理,定义了怎样装载,实例化和初始化,怎样响应来
自客户端的请求及怎样送出服务。这个Portlet生命周期由Portlet接口的init,processAction,
render和destroy方法来表达。
载入和实例化:Portlet 容器负责载入和实例化Portlet。当Portlet 容器运行Portlet 应用或
者延迟到Portlet 需要服务使用者的请求时,Portlet 就会被载入并实例化。载入Portlet 类后,
Portlet 类随即被实例化。
初始化:Portlet 类实例化后,Portlet 容器还需要初始化Portlet。以调用Portlet 去响应客
户端的请求。Portlet 容器呼叫Portlet 接口中的init 方法初始化Portlet。扩展自PortletConfig
的类可以取出定义在部署描述文件中的初始化参数,以及Resource Bundle。
初始化异常:在 Portlet 初始化期间,Portlet 可能会丟出 UnavailableException 或
PortletException 异常。此时,Portlet 容器不能把 Portlet 置入已启动的服务,并且 Portlet
容器必需释放这个 Portlet。 destory 方法不能被呼叫,因为初始化被认为执行失败。发生 失
败后,Portlet 容器会尝试着重新实例化及初始化 Portlet。这个异常处理的规则是:由一个
UnavailableException 指定一个不能执行的最小时间,当此异常发生时,Portlet 容器必需等
到指定时间过去后才产生并且初始化一个新的 Portlet。
在初始化过程中所丟出的 Runtime Exception 异常,被当作 PortletException 来处理。


评论

# re: portal学习(一)抄书  回复  更多评论   

2007-10-15 20:50 by asdf
asdfadfa

# re: portal学习(一)抄书  回复  更多评论   

2007-10-15 20:51 by asdf
... 标题不是骂人呢吗

只有注册用户登录后才能发表评论。


网站导航: