什么是Portal?Portal就是门户。
Portal包括:
(1) Portal Server。『Portal Server是基于WEB的应用程序, 它将不同资源进行整合并展现给用户。有些文章直接把Portal Server叫做Portal,请注意。』
(2) Portlet Container。『Portlet Container用来管理Portlet的生命周期并且提供其运行所需要的必要环境. 并且为Portlet Preferences提供持久性(Persistent)存取服务.但是其不支持内容的Aggregation. Aggregation由Portal组件提供.』
(3) Portlet。『Portlet 是以 Java 技术为技术的 web 组件,可以被容器管理,可以产生动态内容。处理请求并动态返回页面, 可以做为Portal 的可拔插的用户界面组件.』
我们需要Portal的目的就是要做到系统功能与模块的可配置。同时要开源并符合标准。能与其他的系统进行结合比如Struts。
基于这个目标,我们来寻找可用的Portal。
说Portal,就不能不提JSR#168 Portlet。
JSR 是由 JCP ( www.jcp.org ) 这个 Java 组织所定义出来的规范。JSR#168规范就是一个关于Portlet的规范 ——Portlet Spec 1.0 。这个规范推出于去年的10月底。既然有了规范,理所当然的之后的产品就应该按照这个规范来制作。
目前比较主流的Portal产品:
Apache Jetspeed(http://jakarta.apache.org/jetspeed/)
Liferay(http://www.liferay.com)
EXOportal(http://cvs.sf.net/viewcvs.py/exo/ExoPortal/)
Pluto(http://jakarta.apache.org/pluto)
BEA WebLogic Portal (http://edocs.bea.com/wlp/docs81/javadoc/com/bea/portal/model/Portlet.html )
IBM Websphere Portal (http://www.software.ibm.com/wsdd/zones/portal/ )
Oracle Portal Developer Kit (http://portalstudio.oracle.com/)
jfoxportal(http://www.huihoo.org/jfox/jfoxportal/index.html 刚提出草案,不过是国内的。)
Jetspeed是Apache的一个开源项目,现在的最高版本是1.4。WebSphere的Portal就是基于这个系统开发的,但显然二次修改的力度很大。也是应用相对比较多的系统。
但问题是,Jetspeed1.x开发时,标准并没有出台,于是Jetspeed里有很多自己定义的规范,而这些规范显然是应该被废除的。于是这个项目在1.4之后就停止了开发,转而开发支持JSR#168标准的2.0版本。但这个版本的出台目前还遥遥无期。
Apache在JSR#168推出以后,又有了一个新的Portal项目,便是Pluto。Pluto 一个Open Source项目, 是基于Portlet Specs的一个 Portlet Container 的实现. 它也提供了Sample Portal实现.但是功能相对简单。目前开发中。据说从CVS树上下载的版本已经有了安装程序,运行还算正常。但从官方网站来看,还没有推出Alpha版的征兆。倒是Eclipse好像有了Pluto的插件。有文章专门强调:“请记住Pluto只是一个Portlet Container的实现, 不是一个Portal的实现. 如果你需要功能更为强大的Portal,可以使用JetSpeed , 它同样也是Apache的一个Open Source Project. ”有人预言Jetspeed2.0就会基于Pluto来研发。
Liferay 代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。 但Liferay的缺点是它缺乏一个简单清晰可拓展的架构设计,portlet设计显得比较凌乱,进行二次开发有一定的难度。这一点我觉得是个比较致命的弱点,但是有多严重?没有开发,没有发言权。而且这个Based on Jboss。
EXOportal同样Based on Jboss。国内谈论的很少。居然没有找到他们的官方网站,只有一个CVS树。
剩下的,都是商业软件了。
个人觉得BEA WebLogic Portal是做的最好的。我们为什么不能在这上面开发,然后客户有需求的时候直接说服客户让他们买一套Weblogic Portal8.1呢? 哈哈,还可以赚个软件钱。我觉得对于政府、大型企业等完全可以。
至于开源的选择,我个人倾向于Pluto,但Pluto和Struts的整合到底可以到一个什么程度,不好说。Pluto里头部署就是用Portlet了。Jetspeed1.4本身与Struts的兼容是有问题的,“因为二者都是前端控制器模式,每个请求最开始都被映射到一个servlet,你如果要让门户管理起struts应用,那jetspeed的映射应该在最前面,在之后的话你又要想办法把jetspeed中的请求转换到struts,这可能有很多障碍。 ”
看来我得装个CVS客户端从CVS上down个Pluto了。