Liferay Portal评估报告

来源:百度文库 编辑:神马文学网 时间:2024/04/28 19:17:19
Portal
这里所说的Portal是指JCP-JSR168规范所描述的:Portal是一个基于Web的应用,通常它提供个性化、单点登录、内容集成和显示等功能。Portal技术包括三个方面:
1)  Portal服务器(Portal Server);
2)  Portlet容器;(Portlet Container)
3)  Portlet。
1) Portal Server 的定义是
一个 Portal(门户网站)就是指一个 Web-based 的系统,通常都会提供个人化设置、单一登陆、以及由各种不同来源或不同网站取得各式各样的信息,并且将这些信息放在网页之中组合而成的呈现平台,门户网站会有精巧的个人化设置去提供定制的网页,当不同等级的使用者来浏览该页面将获得不同的信息内容。
负责接收HTTP请求,调用portlet,并将portlet产生的内容聚集到portal page返回给客户。
2) Portlet Container 的定义是
portlet container 是提供 portlets 执行的环境,包含了许多 portlets 并且管理他们的生命周期,他也会永远保存着 portlets 的喜好设置,一个 portlet container 接收到来自 portal 的请求后,接着将这个请求传递给存在 container 的 portlet 执行。portlet container 没有义务去组合 portlets 产生的信息內容,这个工作必须由 portal 来处理。portal 和 portlet container 可以放在一起视为同一个系统的组件,或者分开成为两个独立的组件。
负责提供portlet的运行时环境,管理portlet的生命周期,还负责提供portlet持久化能力。
3) 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 的设置。
Portal主要是解决企业信息和应用的前端集成问题,它负责连结企业后台EAI,集成企业的结构和非结构化信息,并提供统一的访问企业信息和应用的入口。
下面这张图展示了portal页面的产生过程(从中也可以了解portal服务器、portal容器和portlet之间的关系)
(摘自JSR168规范文档)
portlet 与 servlet 的关系
Portlet 和 Servlet 算是兄弟有那么一点点相似却又有那么一点点不同,因为 Servlet 和 Portlet 不尽然相同,所以研究小組決定将 portlets 定义成为一个新的组件,因此定义了 portlets 一个新的并且明确的界面与行为。为了尽可能与现有的 servlet 结合达到重复使用的目的,portlet 的规范利用了 servlet 的规范,许多观念都很相似的,结合 portlets、servlets 及 jsp 在同一个网站系统中,我们称为 portlet application 。在同一个 portlet application 中,他们将分享同一个 classloader,context 及 session。
1) Portlet 和 Servlet 的相似之处
@ portlets 也是 Java 技术的 web 组件
@ portlets 也是有特定的 container 在管理
@ portlets 可以动态产生各种内容
@ portlets 的生命周期由 container 所管理
@ portlets 和客户端的互动是通过 request/response 的机制
2) Portlet 和 Servlet 也有一些不同
@ portlets 只产生 markup 信息片段,不是完整的网页文件。而 Portal 会将所有的 Portlet markup 信息片 段放到一个完整的 Portal 网页。
@ portlets 不会和 URL 有直接的关系
@ 客户端必须通过 portal 系统才能和 portlets 互动
@ portlets 有一些定义好的 request 处理,action request 以及 render request。
@ portlets 默认定义 portlet modes 及窗口状态可以指出在网页中该 portlet 的哪个功能正在执行及现在的 状态。
@ portlets 可以在同一个 portal 网页之中存在多个。
3) Portlet 有一些附加的功能是 Servlet 所没有的
@ Portlets 能够存取及储存永久配置文件及定制资料。
@ portlets 可以存取使用者数据
@ portlets 具有 URL 的重写功能在文件中去动态建立连结,允许 portal server 不用去知道如何在网页的片 段之中建立连结及动作。
@ portlets 可以储存临时性的数据在 portlet session 之中,拥有两个不同的范围:
application-wide scope 及 portlet private scope 。
4) Portlet 不具有一些功能, 但是 Servlet 却有提供
@ servlet 具有设置輸出的文字编码( character set encoding)方式
@ servlet 可以设置 HTTP 输出的 header
@ servlet 才能夠接收客户对于 portal 发出的 URL 请求
基于Portal开发项目的优势
1、    可以与以后新开发的或已集成到Portal中的企业应用实现无缝集成。
2、    可以分享Portal服务器和Portlet容器提供的种种功能。这要视Portal服务器提供商而定。
3、    由于Portlet已规范化(JSR168),所以应用中开发的Portlet可以部署在不同的Portal服务器上。
Liferay Portal
开放源码的J2EE Portal产品Liferay Portal(http://www.liferay.com)发布了3.0版本。从这个版本起,Liferay分为两个独立产品:Liferay企业版和Liferay专业版。其中专业版完全采用基于Spring框架(http://www.springframework.org)的轻量级架构,采用基于AOP的基础设施实现,因此可以完全脱离高端J2EE应用服务器,以web应用的形式运行在纯servlet容器(例如Tomcat)中。从技术的角度,这足以证明:基于IoC容器和AOP的轻量级架构完全可以取代EJB提供企业级强度的产品。
Liferay (http://www.liferay.com) 代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。
要特点:
1、提供单一登陆接口,多认证模式(LDAP或SQL);
2、管理员能通过用户界面轻松管理用户,组,角色;
3、用户能可以根据需要定制个性化的portal layout;
4、能够在主流的J2EE应用服务器上运行,如JBoss+Jetty/Tomcat,JonAS,Tomcat;
5、支持主流的数据库,如PostgreSQL,MySQL;
6、使用了第三放的开源项目,如Hibernate, Lucene, Struts,spring
7、支持包括中文在内的多种语言;
8、采用最先进的技术 Java, EJB, JMS, SOAP, XML;
主要缺点:
1、  开发,定制环境配置步骤比较繁琐
2、  文档在官方网站是要收费的,免费文档比较少,相对于流行的框架(如struts,spring),讨论区明显少很多,
3、  开源产品的稳定性不敢保证,我刚从官方站点上下载的安装包,启动服务后就会有数据库操作异常,原因可能只有研读代码后才可知道。
简单的定制过程
1. Liferay的安装和运行
从它的网站www.liferay.com可下载几种类型的应用包,安装最简单的是和jboss,tomcat集成的应用包:liferay-ep-3.1.0-jboss-tomcat.zip。下载后解压到本机的某个目录,假设为c:\ liferay,然后运行c:\liferay\bin\run.bat启动Liferay。
启动后,观察控制台的输出信息,当出现以下信息时,表示启动完毕。
关闭服务的命令:shutdown.bat –shutdown
Liferay启动完毕后,在浏览器中敲入:http://localhost ,登录系统的默认email:test@liferay.com ,密码:test.
Liferay支持多种语言,在个性设置中选择语言为中文,即变为中文界面。
2. 在Liferay上用Portlet实现一个输出“Hello , Portal ! ”的功能。
1)     编写portlet类:
package my.portlet;
import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
public class HelloPortalPortlet extends GenericPortlet {
public void doView(RenderRequest req, RenderResponse res)
throws IOException, PortletException {
res.setContentType("text/html");
res.getWriter().print("Hello Portal ! ");
}
public void processAction(ActionRequest req, ActionResponse res)
throws IOException, PortletException {
}
}
2)     编译portlet类
编译上面这个portlet类时要加入标准的portlet.jar包,它JSR168规范中规定的接口和类,可从jcp网站上下载,搜索安装目录也可找到。编译后将class文件拷贝到:
<安装目录>\server\default\deploy\ext.ear\portal-web-complete.war\WEB-INF\classes
3)     配置portlet,下面提到的配置文件都在web-inf目录下,即:
<安装目录>\server\default\deploy\ext.ear\portal-web-complete.war\WEB-INF
a)在portlet.xml中加入:

168
Hello Portal
my.portlet.HelloPortalPortlet
0

text/html


Hello Portal
Hello Portal
Hello Portal


Power User


User


b)在liferay-portlet.xml中加入:

c)在liferay-display.xml中加入:







3.重新启动Liferay,登录系统后,在内容栏中加入Hello Portal即可看到上面portlet的输出内容: