本文将快速浏览 Apache 门户项目组的任何项目,并着重介绍门户项目组中的核心项目-Jetspeed-2。

引言

JEE作为建立在 Java平台上的企业级应用解决方案,经过这些年不断发展,已成为企业级研发的工业标准和最好选择平台。众多厂商如IBM,BEA和Oracle等都围绕该规范推出了相应的,功能强大的产品。JEE规范组中最受业界认同和取得最大成功的就是JEE Web层面规范,发展到今天,已步入门户(Portal)的时代。

门户,简言之就是提供包括内容聚合、单点登陆、个性化定制和安全管理等服务的基础Web平台。众多JEE产品提供商基于JEE Web层技术推出了自己的Portal产品,著名的产品有IBM WebSphere Portal Server,BEA Weblogic Portal Server等。一直处于技术前沿的著名开源社区Apache,经过这几年的技术积累也形成了自己的门户项目组。该项目组现在已初具规模,并且拥有了一定的用户群体,经受了一定的市场考验。

本文主要面向有一定JEE编程经验的Java研发者和试图构建自己的门户软件产品的产品经理,因为基于开源项目构建企业级的商用产品,已在外国取得了许多成功案例。

名词解释

名词 解释
Portal 门户,提供包括内容聚合、单点登陆、个性化定制和安全管理等服务的基础Web平台。
Portlet Portlet 是基于web的Java组件。他由Portlet容器管理,能够处理请求,产生动态内容。Portlet被Portal用作为可插拔的用户接口组件,为信息系统提供展现。由Portlet动态产生的内容也被叫做fragment。fragment是遵循某种规则的标记(例如:HTML, XHTML,WML),可和其他的fragment一起建立一个完整的文档。一般一个Portlet产生的内容和其他的Portlet产生的内容聚集在一起形成Portal网页。
Portlet Container Portlet在Portlet容器中运行,Portlet容器为Portlet提供必需的运行环境。Portlet容器包含Portlet(组件)并且管理他们的生命周期,他也为 Portlet的参数配置提供持久化的存储。Portlet 容器不是个类似于 servlet 容器的单独容器。他是在 servlet 容器上通过扩展方式实现的,并重用 servlet容器提供的功能。从Portal的角度来看,Portlet Container是Portal平台所提供的众多服务之一。
JSR168,JSR286 由于越来越多的公司研发了各自的Portal组件和基于其的Portal产品(如Bea, IBM, Oracle, Sun, Sybase, Novell, SAP, Jetspeed, Vignette 等.这种互不兼容的接口实现不断带给程式提供商各种问题和麻烦, 为了解决这种问题, JCP发布了JSR168 (Java Specification Request), Portlet Specification, 用以提供不同Portal和Portlets之间的互用性。JSR 286是168规范的延伸,是现在最新标准规范,现在仍处在draft状态。
SSO Single Sign -On,即单点登陆。当一个大系统中存在多个子系统时,用户只需要正确登陆其中任何一个子系统,就能够在各个子系统中来回自由转换和使用授予该用户权限的各种资源。一般能够分为两种类型:Web应用之间的单点登陆和门户Web应用和他所连接的后台系统之间的单点登陆。SSO是任何一个门户产品必须解决的问题,必须提供的服务。
WSRP WSRP是OASIS组织的一个规范,他定义了远程门户网站的Web服务。通过Web Service将远程内容抓取到本地,最后通过本地内容聚合引擎展示出来。

Apache门户项目组整体架构

在引言中已列举了Apache门户项目组的组成项目包括:Jetspeed-1/2,Bridges,Pluto,WSRP-4J和Graffito。由于Jetspeed-1和Jetspeed-2角色相同,下文中假如没有特别指出,任何Jetspeed都是指Jetspeed-2。


图一Apache门户项目组架构图
图一Apache门户项目组架构图

上图中粉红色包围部分为Apache门户项目,其他由土黄色包围部分为他们的依赖项目。通过上图能够很清楚看到,全部项目都构建在JEE Web Tier上,理论上只要支持Servlet 2.3或以上版本规范的Web容器,都能够作为Apache门户项目的基础平台,但Jetspeed官方其实仅仅声明Tomcat是其唯一支持的Web容器。另一块必要的依赖,是构建在O/R mapping项目Apache OJB之上的数据仓库,用于存放Portal系统信息和用户个性化配置(Profile)。

Portals Bridges项目其本质就是由一组类库构成的轻量级框架,通过该桥接器框架能够在门户上支持众多流行的Web框架,如上图括号中所列举。用户通过他能够很容易的将已有的基于这些流行Web框架的Web应用程式,通过少量的修改和配置,作为Portlet应用程式发布单元发布到Portal上。这个项目不但在Jetspeed上取得的成功,还被众多开源的,甚至商用的门户实现所使用,如JBoss Portal,GridSphere Portal,Stringbeans Portal,Vignette Application Portal,Apache Cocoon Portal和Jetspeed Portal。

Jetspeed项目是整个Apache Portal项目组的核心,他是个功能完备的,易于扩展的企业级Portal实现,将在下面的文章中着重介绍他。

Pluto是Jetspeed默认的本地 Portlet Container实现,他是个完全符合JSR-168规范的Portlet容器实现,其前身为IBM捐赠的源代码,因此我们至今还能够在 WebSphere Portal 5.1.1中看到他的身影。这里要注意本地的意思是指运行在该Portlet容器里的Portlet应用程式在物理上和Portal在同一个JVM进程中。

WSRP-4j是WSRP规范的JAVA实现,现在该项目还处在孵育状态,尚未吸引到足够多的研发者的兴趣。其实,我个人认为这是个很有前途的技术发展方向,他能够提供类似Html IFrame这样速成的内容抓取能力。Jetspeed已为WSRP-4j预留了远程Portlet Container的配置选项。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!