`
zjq_blog
  • 浏览: 48702 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
Portal:英文原意是“入口”,国内将其翻译为“门户”。



利用Portal技术,可以将企业的不同的应用系统、不同平台的各类数据和资源进行个性化的整合,通过提供统一登陆界面,创建一个提供支持信息访问、传递,以及跨组织工作的集成化商务环境,实现信息的集中访问。

Portal它不仅要把企业级的后端内容表现出来,它还要把企业级的后端的应用表现出来。对于企业来说,Portal并不仅仅是发布几个新闻,它真正是为了处理业务用的。无论是企业客户还是员工,只要登录进Portal,将能够进入对应的业务系统,真正的去完成业务功能。那么这样的话,对于企业来说,Portal 将成为一个真正的“企业级”门户。



Portal是什么?

Portal 定义:“Portal是一种web应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。聚集是指将来自各个信息源的内容集成到一个web页面里的活动。”(摘自Portlet规范,JSR 168)

每个portal页面由一个或多个portlet窗口组成,每个portlet窗口又分为两部分:一个是外观,它决定了portlet窗口的标题条、控制和边界的样式;另一个是portlet段,它由portlet应用填充。

Portal服务器决定了portal页面的整体观感,像标识、标题条颜色、控制图标等。通过修改几个JSP和css模板文件就可以改变portal的整个观感。



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服务器都支持手持设备访问并具有针对不同的浏览终端生成不同内容的能力。



Portlets是什么?

Portlets定义:“Portlets是一种Web组件-就像servlets-是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段,并与别的portlets生成的标记段组合在一起嵌入到portal页面的标记内。”(摘自Portlet规范,JSR 168)

与servlets类似,portlets是部署在容器内用来生成动态内容的web组件。从技术角度讲portlet是一个实现了javax.portlet.Portlet接口的类,它被打包成war文件格式部署到portlet容器里。
Portlets在以下方面与servlets相似:
1. portlets由特定的容器管理。
2. portlets生成动态内容。
3. portlet的生命周期由容器管理。
4. portlets通过请求/响应模式与web客户端交互。
Portlets在以下方面与servlets相异:
1. portlets只能生成标记段,而不是整个文档。
2. portlets没有可供直接访问的URL地址。不过你还是能够让别人通过URL访问到portlet,你可以把包含该portlet的页面的URL发给他。
3. portlets不能随意地生成内容,这是因为portlet生成的内容最终要成为portal页面的一部分。如果portal服务器要求的是html/text类型,那么所有的portlets都应生成html/text类型的内容。再比方说,如果portal服务器要求的是WML类型,那么所有的portlets都应生成WML类型的内容。

portlets还提供了一些附加的功能:
1. 设置参数的持久化存储:portlets提供了一个PortletPreferences对象用来保存用户的设置参数。这些参数被存入一个持久化数据库,这样服务器重启后数据依然有效。开发者不必关心这些数据存储的具体实现机制。
2. 请求处理:portlets提供了更为细粒度的请求处理。对于用户在portlet上动作时向该portlet发出的请求(一种称为活跃期的状态),或者因用户在其它portlet上动作而引发的刷新页面请求,Portal服务器提供了两种不同的回调方法来处理。
3.  Portlet模式:portlets用模式的概念来表示用户在做什么。在使用mail应用的时候,你可能会用它来读信、写信或检查信件――这些都是mail应用的预定功能,Portlets通常以VIEW模式提供这些功能。但还有一些活动,像指定刷新时间或(重新)设置用户名和密码,这些活动允许用户定制应用的行为,因此它们用的是EDIT模式。Mail应用的帮助功能用的是HELP模式。


4.  窗口状态:窗口状态决定了portal页面上留给portlet生成内容的空间。如果点击最大化按钮,portlet将占据整个屏幕,成为用户唯一可用的portlet;而在最小化状态,portlet只显示为标题条。作为开发者应当根据可用空间的大小来定做内容。

5.  用户信息:通常portlets向发出请求的用户提供个性化的内容,为了能更加行之有效,portlets需要访问用户的属性信息,如姓名、email、电话等。Portlet API为此提供了用户属性的概念,开发者能够用标准的方式访问这些属性,并由管理员负责在这些属性与真实的用户信息数据库(通常是LDAP服务器)之间建立映射关系。



当前基于企业级应用的Portal有IBM websphere Portal,Sun ONE Portal,Bea WebLogic Portal,Oracle Application Server Portal (OracleAS Portal)四大产品。



几种开源Portal的简单介绍分析

主要包括:Pluto,Liferay,eXo,Jetspeed四种开源Portal的介绍和分析,有助于对具体项目选择合适的开发平台。

(1)Pluto

2003年10月JSR168规范1.0正式公布后,Jakarta Apache就开始实施Pluto计划(冥王星计划),最终开发出该规范的一个参考实现(Reference Implementation),即Pluto。Pluto的1.0.1-rc2版与2004年12月发布。

Pluto实现基于 JSR168的一个 Portlet Container,相当于为开发者提供了一个运行portlets的工作平台。Pluto本身也提供了一个简单的Portal模块,该模块仅仅是为了满足Portlet容器和JSR 168的需要而写的,因而显得非常简单,提供的实用的Portlet也非常少。从某种意义上说Pluto更像是一个Portlet Container,作为一个实用的Portal开发框架尚需要更强大的支持。但新版本的Pluto仍没有推出。对于Pluto的应用开发,Apache更推荐使用Jetspeed项目框架。

尽管Pluto作为一个完整的Portal应用还非常欠缺。但不少有影响力的Portal项目使用Pluto作为Portlet Container。这些项目包括:Jetspeed 、Cocoon uPortal 、Jahia等。由此可见Pluto的重要性。从开发者和学习者的角度看,Pluto的意义还在于为开发者和学习者提供了一个深入了解Portlet Container的简洁的参考实例。

(2)Liferay

Liferay(支持JSR168)代表了完整的J2EE应用 ,最高版本是2005年1月推出的Professional 3.2.0。它的主要优点有:

(1)使用第三方的开源项目,如Hibernate等。特别是前台界面部分使用了Struts技术;

(2)支持包括中文在内的多种语言;

(3)支持较多的先进技术,如Web Services、EJB, JMS, SOAP, XML等;

Liferay的缺点是它缺乏一个简单清晰可拓展的架构设计,整个架构比较复杂且庞大;Struts1.1本身并不支持JSR168,所以Liferay在实现诸如上下文共享等问题上显得十分笨重且没有从根本上解决这些问题;portlet设计也显得比较凌乱。此外,如果你的门户系统准备应用于商业用途,你需要购买License。基于它进行二次开发比较困难。

(3)eXo

eXo(支持JSR168)基于JSF的Portal实现。最新版本是2004年10月发布的1.0RC1版。

主要优点包括:

(1) 由AOP(AspectJ)实现的内容管理系统,极大提高了内容管理性能;

(2) 基于Pico Container的Portlet Container,Pico是一个著名的IoC3轻量级容器。同时也实现了上下文共享,二次开发的流程比较清晰;

(3) 使用Struts框架技术;

(4) 提供工作流技术服务(Workflow service)。

(5) 提供了很多交流工具,通过XML可以为结构化的信息轻易地创建视图;

     由上可见eXo采用了诸多先进技术,但存在不少缺点。主要缺点:由于Portal Server本身的数据是使用xmldb来进行处理,保存到数据库的数据都是乱码而且它所有默认的平台字符集都是ISO-8859_1。缺乏中文的充分支持,对于中文门户的开发并没有优势;由于JSF是重量级的表现层框架,使得eXo的二次开发工作量比较大;对于商业Portal应用开发需要购买License。总体开发难度较大。

(4) Jetspeed

Jetspeed是Apache组织的开源Portal项目。Jetspeed 目前有两个版本可供选择1.X和2.0版本。Jetspeed1.X出现得比较早,但第一个较为成熟的版本发布是1.4。此后1.X不断推出新版本。但Jetspeed1.X都不支持JSR168。当JSR168在2003年发布后,Apache开始开发Jetspeed2,提供对JSR168 的全面支持。

下表是Jetspeed重要版本的发布日期:

Jetspeed的重要版本                                                                           发布日期

Jetspeed-1.4b2                                                                                           2002年12月

Jetspeed-1.5                                                                                       2004年4月

Jetspeed-2.0-M1                                                                                 2004年12月

Jetspeed-2.0-M2                                                                                 2005年4月

Jetspeed1.X基于Turbine框架开发,它提供了丰富的Portal技术功能。主要优点有:XML文件注册Portlet,便于管理;图形化的部署和卸载;对中文的良好支持等。值得注意的是IBM早期的Websphere Portal Server就是在JetSpeed1.X上进行二次开发的。Jetspeed2.0在1.X基础上进行了较大的改动,功能更加丰富,完全遵循JSR标准。

配置方法,不同的版本的配置可能有变化,如不成功,可以自行察看文档。

Pluto在Tomcat下的安装配置方法:

(1) 从下载最新的二进制版本安装文件

(2) 执行%pluto%/bin/install,将它安装到Tomcat目录下即可

(3) 在浏览器中输入运行Pluto:

http://localhost:8080/pluto/portalhttp://portals.apache.org/pluto/mirrors.cgi



Liferay Professional在Tomcat下的安装配置方法:

(1) 从下载Liferay Professional安装文件;

(2) 解压ZIP包到某个目录下

(3) 若下载Tomcat版本的Liferay安装文件,则不需再装Tomcat,直接启动bin目录下的startup. bat文件。

(4) 在浏览器中输入运行Liferay Professional:

http://localhost/http://www.liferay.com/downloads/index.jsp



eXo Platform在Tomcat下的安装配置方法:

(1) 从 下载eXo Platform的安装包。

(2) 解压ZIP包到某个目录下

(3) 若下载Tomcat版本的eXo安装文件,则不需再装Tomcat,直接启动bin目录下的startup. bat文件。

(4)  在浏览器中输入 运行eXo Platform:

http://localhost/http://www.exoplatform.com/portal/faces/public/exo



Jetspeed2在Tomcat下的安装配置方法:

(1) 从 下载Jetspeed2 M1或M2版本安装包。

(2) 若是安装包中已经捆绑Tomcat,解压即可。若安装包不含Tomcat,先安装Tomcat,然后将安装包解压到Tomcat目录,并覆盖相关文件即可。

(3) 安装要注意的问题有:Jetspeed2M1版本由于Bug无法安装Tomcat5.5上(此BUG见);Jetspeed2必须安装在Tomcat5.0.28以上版本上,否则低版本由于JAAS问题无法登陆;

(4) 启动jetspeed-database目录下的start-database.bat,启动数据库;

(5) 启动Tomcat;

(6) 在浏览器中输入 运行Jetspeed:

http://localhost:8080/jetspeed/portalhttp://issues.apache.org/jira/browse/JS2-187http://www.apache.org/dist/portals/jetspeed-2/



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=898838

文章来源:http://blog.chinaunix.net/u1/51750/showart_407148.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics