(摘自Huihoo文章)
提供基于門戶的解決方案的開源軟件有:
??? JetSpeed是Apache(http:// jakarta.apache.org/jetspeed/)組織的一個(gè)開源項(xiàng)目,IBM的WebSphere Portal Server正是基于JetSpeed進(jìn)行二次開發(fā)。
在滿足門戶可定制性的需求上,引入了門戶組件概念Portlet,Portlet是一個(gè)可插拔的組件,關(guān)于Portlet有各種定義,JetSpeed在提交的JSR-168 portlet API specifications對Portlet的定義如下:
Portlet是一個(gè)Web組件,可以被容器管理,可以產(chǎn)生動態(tài)內(nèi)容。 Portlet可以很容易地被插入并且運(yùn)行于一個(gè)Web應(yīng)用中,Portlet是被設(shè)計(jì)成聚合大量內(nèi)容的組合頁面,舉例:同樣一個(gè)Portlet,根據(jù)不同的用戶,可以產(chǎn)生不同的實(shí)例,這些實(shí)例中是根據(jù)用戶設(shè)置包含不同的內(nèi)容,也就是滿足用戶的可定制性。
為了實(shí)現(xiàn)門戶內(nèi)容的有效管理和監(jiān)控,JetSpeed的重要內(nèi)容組件Slide引入了Domain和Namespace方面的概念,對所有資源進(jìn)行樹形結(jié)構(gòu)的控制,在Slide中,Domain是一系列Namespace的聚合,它類似文件系統(tǒng)中的“/”根目錄, domain 可以控制在其中登記的Namespace的訪問權(quán)限以及執(zhí)行Namespace的初始化和連接等管理工作。
Namespace是個(gè)自我獨(dú)立的有實(shí)體內(nèi)容的容器,它不能包含指向或連接到其它namespace,每個(gè)應(yīng)用系統(tǒng)可以是一個(gè)NameSpace,Namespace包含獨(dú)立的數(shù)據(jù)和這些數(shù)據(jù)的安全訪問機(jī)制。
JetSpeed雖然提供了豐富的Portal技術(shù)功能,但是其可定制性比較差,其重要的內(nèi)容組件Slide也比較難以讓人理解,它的安全控制框架與通用的J2EE使用JAAS不相融合,所有這些都造成了在其基礎(chǔ)上進(jìn)行二次開發(fā)的難度。
Liferay
Liferay(http://www.liferay.com)代表了完整的J2EE應(yīng)用,使用了Web、EJB以及JMS等技術(shù),特別是其前臺界面部分使用Struts框架技術(shù),基于XML的portlet配置文件可以自由地動態(tài)擴(kuò)展,使用了Web Services來支持一些遠(yuǎn)程信息的獲取,使用Apahce Lucene實(shí)現(xiàn)全文檢索功能。Liferay業(yè)務(wù)層使用Stateless Session EJBs,通過hibernate實(shí)現(xiàn)持續(xù)層,使用jaas實(shí)現(xiàn)安全策略.另外表示層使用struts和tiles.
Liferay的缺點(diǎn)是它缺乏一個(gè)簡單清晰可拓展的架構(gòu)設(shè)計(jì),portlet設(shè)計(jì)顯得比較凌亂,進(jìn)行二次開發(fā)有一定的難度