(摘自Huihoo文章)
提供基于门户的解决方案的开源软件有:
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业务层使用Stateless Session EJBs,通过hibernate实现持续层,使用jaas实现安全策略.另外表示层使用struts和tiles.
Liferay的缺点是它缺乏一个简单清晰可拓展的架构设计,portlet设计显得比较凌乱,进行二次开发有一定的难度