Liferay Portal评估报告

来源:百度文库 编辑:神马文学网 时间:2024/04/30 00:36:12

Liferay Portal评估报告

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 Portalhttp://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的输出内容: