Portal 的组成可以分为三部份 (1) Portal Server (2) Portlet Container (3) Portlet
在Portlet规范里是这样讲的:“portal是一种web应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。聚集是指将来自各个信息源的内容集成到一个web页面里的活动”。
Portal的功能可以分为三个主要方面:
1. Portlet容器:Portlet容器与servlet容器非常类似,所有的portlet都部署在portlet容器里,portlet容器控制portlet的生命周期并为其提供必要的资源和环境信息。Portlet容器负责初始化和销毁portlets,向portlets传送用户请求并合成响应。
2. 内容聚集:Portlet规范中规定portal的主要工作之一是聚集由各种portlet应用生成的内容,我们将在“如何创建Portal页面”部分对此做进一步讨论。
3. 公共服务:portlet服务器的一个强项是它所提供的一套公共服务。这些服务并不是portlet规范所要求的,但portal的商业实现版本提供了丰富的公共服务以有别于它们的竞争者。
在大部分实现中都有望找到的几个公共服务有:
o 单次登录:只需登录portal服务器一次就可以访问所有其它的应用,这意味着你无需再分别登录每一个应用。例如一旦我登录了我的intranet网站,我就能访问mail应用、IM消息应用和其它的intranet应用,不必再分别登录这些应用。Portal服务器会为你分配一个通行证库。你只需要在mail应用里设定一次用户名和密码,这些信息将以加密的方式存储在通行证库中。在你已登录到intranet网站并要访问mail应用的时候,portal服务器会从通行证库中读取你的通行证替你登录到mail服务器上。你对其它应用的访问也将照此处理。
o个性化:个性化服务的基本实现使用户能从两方面个性化她的页面:
第一,用户可以根据她的自身喜好决定标题条的颜色和控制图标。
第二,用户可以决定在她的页面上有哪些portlets。例如,如果我是个体育迷,我可能会用一个能提供我钟爱球队最新信息的portlet来取代股票和新闻portlets。
一些在个性化服务方面领先的商业实现版本允许你建立为用户显示什么样的应用所依据的标准(如收入和兴趣)。在这种情况下,可以设定一些像“对任何收入为X的用户显示馈赠商品的portlet”和“对任何收入为X的用户显示打折商品的portlet”这样的商业规则。此外还有一些公共服务,比如机器翻译,是由portal服务器将portlet生成的内容翻译为用户要求的语言。大部分的商业portal服务器都支持手持设备访问并具有针对不同的浏览终端生成不同内容的能力。
1) Portal Server 的定义
一个 Portal (门户网站)就是指一个 Web-based 的系统,通常都会提供个人化设置、单一登陆、以及由各种不同来源或不同网站取得各式各样的信息,并且将这些信息放在网页之中组合而成的呈现平台,门户网站会有精巧的个人化设置去提供定制的网页,当不同等级的使用者来浏览该页面将获得不同的信息内容。为规范Portal,SUN于2003年底制定了JSR168,它定义了Portlet标准,并给出了一个实现接口。
2) Portlet Container 的定义
portlet container 是提供 portlets 执行的环境,包含了许多 portlets 并且管理他们的生命周期,他也会永远保存着 portlets 的喜好设置,一个 portlet container 接收到来自 portal 的请求后,接着将这个请求传递给存在 container 的 portlet 执行。 portlet container 没有义务去组合 portlets 产生的信息內容,这个工作必须由 portal 来处理。 portal 和 portlet container 可以放在一起视为同一个系统的组件,或者分开成为两个独立的组件。
什么是 Portlet?
一个 Portlet 是以 Java 技术为技术的 Web 组件,由 Portlet Container 所管理,专门处理客户的 request 以及产生各种动态的信息内容。 Portlets 为可插式 ( pluggable ) 的客户界面组件,提供呈现层成为一个信息系统。
这些由 portlet 产生的内容也被称为片段 (fragment) ,而片段是具有一些规则的 Markup( HTML 、 XHTML 、 WML ) ,而且可以和其他的片段组合而成一个复杂的文件。而 Portlet 中的内容正常来说是与其他 Portlet 的内容聚合而成为一个 Portal 网页。而 Portlet 的生命周期是被 Portlet Container 所管理控制的。
客户端和 portlets 的互动是由 portal 通过典型的 request/response 方式实现,正常来说,客户会和 portlets 所产生的内容互动,举例来说,根据下一步的连接或者是确认送出的表单,结果 portal 将会接收到 portlet 的动作,将这个处理状况转向到目标 portlet 。这些 portlet 内容的产生可能会因为不同的使用者而有不同的变化,完全是根据客户对于这个 portlet 的设置。
Portlet是基于java技术的web组件,它由Portlet容器管理、并处理请求,并动态生成输出内容。Portlet是基于java的web组件,由Portlet容器管理,并由容器处理请求,生产动态内容。Portals使用Portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用servlets进行web应用编程的下一步,Portlets实现了web应用的模块化和用户中心化。Portlet规范,即jsr(java specification request)168,是为了实现portal和Portlet的互操作。它定义了Portlet和Portlet容器之间的和约,让Portlet实现个性化、表示和安全的api集。规范还定义了怎样在Portlets应用中打包Portlets。 Portal有什么特色?低成本的集成技术。如果你的网站或企业已经有了很多信息系统,Portal可以很容易的将这些系统集成起来,并以统一的方式提供给用户,统一可以有流程的统一,如:登陆、定制、浏览;界面的统一,如:显示风格登高度的模块化。通过Portal技术提供的plugin技术,可以根据企业,网友的需求编制标准的模块,并嵌入Portal系统,供企业、网友使用。高度的扩展性,已经有了很多产品和标准来制定Portal,作为这些产品和标准,如:jsr- 168,通过Portlet的概念来对Portal的功能进行扩展。 Portal有什么用?个人认为从两个方面。一是针对跟人(网友)的应用。由于Portal的特色,企业和网站可以很容易的将自己的服务进行标准封装,插入Portal系统,提供跟用户使用。现在很多门户网站和专业网站有很多服务,但是很多服务用户根本就没有使用过、发现过,通过Portal的形式给用户一个集中体验的场所。二是针对企业,企业可以将现有的信息系统,资源通过Portal来进行封装,提供给用户使用。比如:有些公司有报销系统,考核系统,会议系统,但这些系统都是彼此分离的,使用和界面并不统一,通过Portal可以很容易地将这些系统提供的服务封装并呈给用户使用。
门户网站( PORTAL )的作用
单点登录
Portal的单点登录是基于应用集成系统的,统一身份认证系统实现系统的单点登录:用户只需要进行一次登录,就可以访问到所有的授权服务;所有的应用系统可以提供统一的用户管理。Portal的用户权限管理能够控制到页面或Portlet
个性化定制
针对不同的用户登录,可以展示不同的内容。可以根据用户的关注点不同来为用户提供定制桌面的功能。
资源整合
完成应用整合,以及业务整合的功能。不同的 web 系统, web 业务平台可以通过 portlet 的 web 剪切功能直接放入门户里面来。
门户网站可选方案分析
厂商的门户平台:
1、IBM WebSphere Portal
2、BEA PORTAL
厂商的门户平台,一半都有自己的开发标准,现在都要求用 JSR168 的标准进行开发,厂商的门户成本比较高,稳定性好,服务好产品的后期维护以及开发都有比较成功的案例;
开源的门户平台
JetSpeed
JetSpeed 是 Apache ( http:// jakarta.apache.org/jetspeed/ )组织的一个开源项目, IBM 的 WebSphere Portal Server 正是基于 JetSpeed 进行二次开发。
在满足门户可定制性的需求上,引入了门户组件概念 Portlet , Portlet 是一个可插拔的组件,关于 Portlet 有各种定义, JetSpeed 在提交的 JSR-168 portlet API specifications 对 Portlet 的定义如下:
Portlet 是一个 Web 组件,可以被容器管理,可以产生动态内容。 Portlet 可以很容易地被插入并且运行于一个 Web 应用中, Portlet 是被设计成聚合大量内容的组合页面,举例:同样一个 Portlet ,根据不同的用户,可以产生不同的实例,这些实例中是根据用户设置包含不同的内容,也就是满足用户的可定制性。 为了实现门户内容的有效管理和监控, JetSpeed 的重要内容组件 Slide 引入了 Domain 和 Namespace 方面的概念,对所有资源进行树形结构的控制,在 Slide 中, Domain 是一系列 Namespace 的聚合,它类似文件系统中的 “/” 根目录, domain 可以控制在其中登记的 Namespace 的访问权限以及执行 Namespace 的初始化和连接等管理工作。
Namespace 是个自我独立的有实体内容的容器,它不能包含指向或连接到其它 namespace ,每个应用系统可以是一个 NameSpace , Namespace 包含独立的数据和这些数据的安全访问机制。
JetSpeed 虽然提供了丰富的 Portal 技术功能,但是其可定制性比较差,其重要的内容组件 Slide 也比较难以让人理解,它的安全控制框架与通用的 J2EE 使用 JAAS 不相融合,所有这些都造成了在其基础上进行二次开发的难度。
Liferay
Liferay ( http://www.liferay.com )代表了完整的 J2EE 应用,使用了 Web 、 EJB 以及 JMS 等技术,特别是其前台界面部分使用 Struts 框架技术,基于 XML 的 portlet 配置文件可以自由地动态扩展,使用了 Web Services 来支持一些远程信息的获取,使用 Apahce Lucene 实现全文检索功能。
Liferay Portal 是一套相当成熟的 Java/J2EE portal system ,遵循 Portlet API JSR168 的标准。
作为一个开源 Portal 产品, Liferay Portal 提供对多个独立系统的内容集成,帮助多个组织实现更有效的合作。与其他商业的 Portal 产品相比, Liferay Portal 有着一系列的优良特性,而且不需要付费。
Liferay 的缺点是它缺乏一个简单清晰可拓展的架构设计, portlet 设计显得比较凌乱,进行二次开发有一定的难度 .
Pluto
Pluto 是一个满足 Portlet API 规范的 Portlet 容器的实现,它为开发者提供了一个运行 portlets 的工作平台。然而,如果没有一个驱动器( driver ),也就是 Portal ,的支持的话,运行和测试 Portlet 容器将非常之麻烦。 Pluto 本身也提供了一个简单的 Portal 模块,该模块仅仅是为了满足 Portlet 容器和 JSR 168 的需要而写的。
JBoss Portal
JBoss Portal 提供了一个开源符合标准的门户平台,可以用其搭建 / 布局一个门户网站的 web 界面,发布和管理内容以及定制它的用户体验。 JBoss Portal 最新版本中在个性化设置,身份验证,工作流都进行重大更进。此外还集成了 Google Gadgets ,以提高用户工作效率。
门户网站发展规划
总体规划图
外网的用户通过门户网站可以使用所有的业务系统以及短信、邮件、 OA 等原有的系统,实现了应用整合。
由此可见门户的重要地位,公司初步的选定采用 LifeRay 作为公司门户产品的研发基础。
在 LifeRay 的基础上研发出公司自己的门户平台。
实施步骤
平台的学习使用
开发一个平台,首先要能熟练的使用这个平台,分析这个平台的不足与优点,在学习使用的过程中应该能够提出自己对将要研发平台的建议和规划以及平台的组成要素,开发的工具以及环境配置。
Portlet 的学习开发部署
平台会使用以后,下一步就要开发自己的公用的插件了,依据 JSR168portlet 开发的标准,进行 portlet 的开发,这一个阶段首要的任务是开发出自己的插件。然后开始组织培训,如何搭建开发环境如何调试 Portlet ,以及平台如何使用,还有就是如何部署自己开发的 portlet 。这一步需要开发人员有对新知识渴望学习的兴趣。
产品的包装命名
公司美工在开发人员的指导下,一起对产品的插件以及平台进行界面美化,让美工掌握如何对插件进行美化,以及设计自己的产品的皮肤样式。
产品的测试销售
产品必须经过严格的测试然后由销售人员针对不同的用户群销售。
产品维护
作为平台的维护,主要是美工对皮肤的美化,还有就是开发新的插件;这一块可以有一个既懂美工又熟悉 portlet 编程的专人维护就可以了,因为维护的内容很少,所以后期的维护成本得以控制。