Junky's IT Notebook

          統(tǒng)計(jì)

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評(píng)論排行榜

          liferay Portal 二次開(kāi)發(fā)指南

          文檔說(shuō)明

           
          參與人員:
           
          作者 網(wǎng)名 聯(lián)絡(luò)
          柯自聰 eamoi   educhina eamoi@163.com(技術(shù)) zcke0728@hotmail.com(版權(quán))
               

           
          發(fā)布記錄:
           
          版本 日期 作者 說(shuō)明
          1.0 2005-10-20 柯自聰 創(chuàng)建,第一版
                 

           
          鏈接:
           
          類(lèi)別 網(wǎng)址
          Blog http://www.aygfsteel.com/eamoi/
          MSN-Space http://spaces.msn.com/members/eamoi/

           
           
          OpenDoc版權(quán)說(shuō)明:
          本文檔版權(quán)歸原作者所有。
          在免費(fèi)、且無(wú)任何附加條件的前提下,可在網(wǎng)絡(luò)媒體中自由傳播。
          如需部分或者全文引用,請(qǐng)事先征求作者意見(jiàn)。
          如果本文對(duì)您有些許幫助,表達(dá)謝意的最好方式,是將您發(fā)現(xiàn)的問(wèn)題和文檔改進(jìn)意見(jiàn)及時(shí)反饋給作者。當(dāng)然,倘若有時(shí)間和能力,能為技術(shù)群體無(wú)償貢獻(xiàn)自己的所學(xué)為最好的回饋。
           
          序... 5
          第一部分 Liferay Portal 架構(gòu)解析... 6
          第一章 Liferay Portal. 6
          第一節(jié) Portal規(guī)范... 6
          1.1.1 JSR168. 6
          1.1.2 WSRP. 6
          第二節(jié) 什么是Portal7
          1.2.1 Portal 服務(wù)器... 7
          1.2.2 Portlet容器... 7
          第三節(jié) 什么是Portlet8
          1.3.1 Portlet8
          1.3.2 Portlet與Servlet的關(guān)系... 8
          1.3.3 Portlet的生命周期... 9
          第四節(jié) Liferay Portal工作原理... 9
          1.4.1 Portlet 樣式以及窗口狀態(tài)... 10
          1.4.2 Portal頁(yè)面... 11
          第二章Liferay Portal的使用... 13
          第一節(jié) Liferay Portal安裝... 13
          第二節(jié) Liferay Portal的用戶(hù)策略... 14
          2.2.1 定義用戶(hù)... 14
          2.2.2 添加用戶(hù)... 15
          2.2.3 修改用戶(hù)... 15
          2.2.4 定義用戶(hù)組... 18
          2.2.5 新增、重命名用戶(hù)組... 19
          2.2.6 修改用戶(hù)組... 19
          2.2.7 定義角色... 21
          2.2.8 新增、重命名角色... 21
          2.2.9 修改用戶(hù)組角色... 21
          2.2.10 定義Portlet的角色... 22
          第三節(jié) Liferay Portal內(nèi)容和布局... 24
          2.3.1 什么是布局... 24
          2.3.2 什么是內(nèi)容... 26
          2.3.3 內(nèi)容布局與Portlet的關(guān)系... 27
          2.3.4 選擇內(nèi)容和布局... 28
          第四節(jié) Liferay Portal的桌面... 28
          2.4.1 什么是桌面... 28
          2.4.2 定義個(gè)性化的桌面... 29
          第五節(jié) Liferay Portal的品質(zhì)... 29
          2.5.1 什么是品質(zhì)... 30
          2.5.2 品質(zhì)和Portlet、Portal的關(guān)系... 30
          2.5.3 定義個(gè)性化的品質(zhì)... 30
          第六節(jié) Liferay Portal的部署描述文件... 31
          2.6.1 web.xml31
          2.6.2 portlet.xml32
          2.6.3 liferay-Portlet.xml33
          2.6.4 liferay-display.xml34
          2.6.5 liferay-layout-templates.xml35
          2.6.7 liferay-look-and-feel。xml35
          第二部分 Liferay Portal 二次開(kāi)發(fā)... 36
          第三章開(kāi)發(fā)自己的Portlet. 36
          第一節(jié) 重要的基類(lèi):GenericPortlet36
          第二節(jié) Portlet標(biāo)簽... 37
          3.2.1 defineObjects標(biāo)簽... 37
          3.2.2 renderURL標(biāo)簽... 37
          3.2.3 actionURL標(biāo)簽... 38
          3.2.4 param標(biāo)簽... 38
          3.2.5 namespace標(biāo)簽... 38
          第三節(jié) Portal的對(duì)象... 38
          3.3.1 Request對(duì)象... 39
          3.3.2 Response對(duì)象... 41
          3.3.3 PortletConfig對(duì)象... 41
          3.3.4 Session對(duì)象... 41
          3.3.5 Preference對(duì)象... 43
          第四節(jié) 編寫(xiě)自己的Portlet類(lèi)... 44
          3.4.1 開(kāi)發(fā)環(huán)境... 44
          3.4.2 準(zhǔn)備工作... 44
          3.4.3 HelloWorldPortlet46
          3.4.4 HelloJSPPortlet47
          第五節(jié) 修改Web部署描述文件... 48
          第六節(jié) 創(chuàng)建Liferay Portal部署描述文件... 49
          第三部分 Liferay Portal部署... 54
          第四章部署自己的Portlet. 54
          第一節(jié) 手動(dòng)部署... 54
          第二節(jié) Ant自動(dòng)部署... 55
          第三節(jié) 加入Liferay Portal自有列表... 55
          第四節(jié) 普通Java Web應(yīng)用轉(zhuǎn)化為Portlet應(yīng)用... 56
          第四部分附錄... 58
          第五章相關(guān)資源... 58
          第一節(jié)資源網(wǎng)站... 58
          第二節(jié) 示例... 58
          第六章參考資料... 59
          后序
           
          第一部分 Liferay Portal 架構(gòu)解析
          本部分主要內(nèi)容
          Portal 服務(wù)器 Portal 容器 Portlet
          第一章 Liferay Portal
          作為一個(gè)開(kāi)源Portal產(chǎn)品,Liferay Portal提供對(duì)多個(gè)獨(dú)立系統(tǒng)的內(nèi)容集成,幫助多個(gè)組織實(shí)現(xiàn)更有效的合作。與其他商業(yè)的Portal產(chǎn)品相比,Liferay Portal有著一系列的優(yōu)良特性,而且不需要付費(fèi)。
          第一節(jié) Portal規(guī)范
          隨著Portal的興起,越來(lái)越多的公司開(kāi)始涉足Portal產(chǎn)品開(kāi)發(fā),并組建各自的Portal組件和基于其的產(chǎn)品,比如IBM、BEA、MicroSoft、SAP、Apache等。各個(gè)廠商的接口互不兼容,給軟件開(kāi)發(fā)商以及開(kāi)發(fā)人員帶來(lái)諸多不便。
          1.1.1 JSR168
          為此,JCP組織發(fā)布了JSR168(Java Specification Request),Portlet Specification V1.0,用來(lái)提供不同的Portal和Portlet之間的互通性。只要開(kāi)發(fā)的Portlet遵循JSR168,則就可以在所有遵循JSR168的Portal上部署運(yùn)行。
          JSR168中定義了Portal的實(shí)現(xiàn)規(guī)范和接口,并對(duì)理想的Portlet進(jìn)行了詳細(xì)的規(guī)劃和描述。
          1.1.2 WSRP
          WSRP是OASIS Web Service for Remote Portlet的縮寫(xiě)。WSRP是Web Service的一種新的商業(yè)應(yīng)用,一種新的標(biāo)準(zhǔn),主要用來(lái)簡(jiǎn)化Portal對(duì)于各種資源或者程序整合的復(fù)雜度,可以避免編程帶來(lái)的整合麻煩和問(wèn)題。而且Portal管理員可以從海量的WSRP服務(wù)中選擇需要的功能用以整合到目前所用的Portal中。它有三種角色:
          ①、生產(chǎn)者 à 提供Portlet
          ②、消費(fèi)者 à 使用Portlet
          ③、終端用戶(hù) à 最終用戶(hù)
          它的特點(diǎn)在于生產(chǎn)者將消費(fèi)者所需要的信息通過(guò)WSRP返回給消費(fèi)者,這些信息是相對(duì)標(biāo)記片斷,例如HTML、XHTML等,可以直接嵌入用戶(hù)的頁(yè)面中,而不用像Web Service一樣開(kāi)發(fā)用戶(hù)端接口。
          實(shí)現(xiàn)這個(gè)規(guī)范,Portal可以跟各式各樣的數(shù)據(jù)源打交道,徹底終結(jié)信息孤島的窘境。
          第二節(jié)  什么是Portal
          Portal是基于Web的,以“應(yīng)用整合”和“消除信息孤島”為最終目的,提供單點(diǎn)登錄、內(nèi)容聚合、個(gè)性化門(mén)戶(hù)定制等功能的綜合信息系統(tǒng)。
          完整的Portal通常由Portal服務(wù)器、Portlet容器、Portlet構(gòu)成。
          1.2.1 Portal 服務(wù)器
          Portal服務(wù)器是容納Portlet容器,支持Portlet呈現(xiàn)的普通或者特殊Web服務(wù)器。Portal服務(wù)器通常會(huì)提供個(gè)性化設(shè)置、單點(diǎn)登錄、內(nèi)容聚合、信息發(fā)布、權(quán)限管理等功能,支持各種信息數(shù)據(jù)來(lái)源,并將這些數(shù)據(jù)信息放在網(wǎng)頁(yè)中組合而成,提供個(gè)性化的內(nèi)容定制,不同權(quán)限的瀏覽者能夠?yàn)g覽不同的信息內(nèi)容。通常,Portal提供以下功能:
          單點(diǎn)登錄:Portal通常采用ACL、SSL、LDAP等業(yè)界標(biāo)準(zhǔn)的安全技術(shù),提供對(duì)所有現(xiàn)有應(yīng)用系統(tǒng)的安全集成,只需在Portal的唯一入口上登錄一次,就可以訪問(wèn)所有應(yīng)用系統(tǒng)和數(shù)據(jù)。對(duì)于安全性要求較高的應(yīng)用系統(tǒng),如電子商務(wù)平臺(tái)、交易系統(tǒng)等,通過(guò)擴(kuò)展接口傳遞用戶(hù)身份信息,如數(shù)字證書(shū)信息、數(shù)字簽名信息等,進(jìn)行二次身份認(rèn)證,保證單點(diǎn)登陸的安全性。
          權(quán)限控制:系統(tǒng)采用LDAP對(duì)用戶(hù)資源進(jìn)行統(tǒng)一的管理,同時(shí)提供二次開(kāi)發(fā)接口,可以與其他應(yīng)用系統(tǒng)的用戶(hù)管理模塊對(duì)接,并能隨相關(guān)業(yè)務(wù)系統(tǒng)實(shí)時(shí)更新訪問(wèn)權(quán)限。通過(guò)完善的授權(quán)機(jī)制及存取控制,用戶(hù)訪問(wèn)權(quán)限控制到字段級(jí)別,確保用戶(hù)只能訪問(wèn)具有權(quán)限的應(yīng)用系統(tǒng)及相關(guān)信息。
          內(nèi)容管理: 實(shí)現(xiàn)應(yīng)用系統(tǒng)之間實(shí)時(shí)交換信息。采用多種緩存機(jī)制,保證內(nèi)容交換的性能和準(zhǔn)確性。采用基于XML的Rich Site Summary (RSS)標(biāo)準(zhǔn),迅速在各應(yīng)用系統(tǒng)之間傳播最新變化。
          信息發(fā)布: 實(shí)現(xiàn)信息門(mén)戶(hù)內(nèi)容的動(dòng)態(tài)維護(hù)。動(dòng)態(tài)網(wǎng)站系統(tǒng)可與OA協(xié)同辦公系統(tǒng)、知識(shí)管理系統(tǒng)等集成,網(wǎng)站信息須經(jīng)OA系統(tǒng)的審批流程流轉(zhuǎn)通過(guò)后或知識(shí)管理平臺(tái)設(shè)置具有外部共享權(quán)限后才可正式發(fā)布,真正實(shí)現(xiàn)內(nèi)外信息發(fā)布的同步。
          文件管理: 系統(tǒng)實(shí)現(xiàn)無(wú)縫集成多種數(shù)據(jù)源,包括:數(shù)據(jù)庫(kù)、文檔(Office文檔、PDF、AutoCAD、甚至ZIP文檔)、Web網(wǎng)頁(yè)、FTP站點(diǎn)等,并對(duì)數(shù)據(jù)按業(yè)務(wù)要求和職務(wù)特點(diǎn)加以分析整理,通過(guò)統(tǒng)一Web界面主動(dòng)推送(Push)至用戶(hù)的門(mén)戶(hù)桌面,幫助用戶(hù)做出及時(shí)、正確的決策。
          1.2.2  Portlet容器
          Portlet容器提供Portlet執(zhí)行的環(huán)境,包含很多Portlet并管理它們的生命周期,保存Portlet的定制信息。
          一個(gè)Portal容器接收到來(lái)自Portal的請(qǐng)求后,接著將這個(gè)請(qǐng)求傳遞給存在Portal容器的Portlet 執(zhí)行。Portlet容器沒(méi)有義務(wù)去組合Portlet 產(chǎn)生的信息內(nèi)容,這個(gè)工作必須由Portal來(lái)處理。Portal和 Portal容器可以放在一起視為同一個(gè)系統(tǒng)的組件,或者分開(kāi)成為兩個(gè)獨(dú)立的組件。
          Portlet容器是普通Web Servlet容器的擴(kuò)展,所以一個(gè)Portlet容器可以構(gòu)建于一個(gè)已經(jīng)存在的Servlet容器或者可能實(shí)現(xiàn)全部Web Servlet容器的全部功能。無(wú)論P(yáng)ortlet容器怎么實(shí)現(xiàn),它的運(yùn)行環(huán)境總是假定它支持Servlet2.3規(guī)范。
          通常,Portlet容器擴(kuò)展自普通的Servlet容器。
           
          第三節(jié)  什么是Portlet
          Portlet是Portal中最重要的組件,負(fù)責(zé)在Portal中呈現(xiàn)信息內(nèi)容,有相應(yīng)的生命周期。通過(guò)自定義Portlet,用戶(hù)很容易定義個(gè)性化的Portal頁(yè)面。Portlet由Portlet容器負(fù)責(zé)管理、處理請(qǐng)求并返回動(dòng)態(tài)頁(yè)面,可以作為Portal的可即插即用的界面組件。
          1.3.1 Portlet
          一個(gè)Portlet是以Java技術(shù)為技術(shù)的Web組件,由Portlet容器所管理,專(zhuān)門(mén)處理客戶(hù)的信息請(qǐng)求以及產(chǎn)生各種動(dòng)態(tài)的信息內(nèi)容。Portlet 為可插式的客戶(hù)界面組件,提供呈現(xiàn)層成為一個(gè)信息系統(tǒng)。
          這些由Portlet產(chǎn)生的內(nèi)容也被稱(chēng)為片段,而片段是具有一些規(guī)則的標(biāo)記( HTML、XHTML、WML ),而且可以和其他的片段組合而成一個(gè)復(fù)雜的文件。一個(gè)或多個(gè) Portlet 的內(nèi)容聚合而成為一個(gè) Portal 網(wǎng)頁(yè)。而 Portlet 的生命周期是被 Portlet 容器所管理控制的。
          客戶(hù)端和Portlet的互動(dòng)是由Portal通過(guò)典型的請(qǐng)求/響應(yīng)方式實(shí)現(xiàn),正常來(lái)說(shuō),客戶(hù)會(huì)和Portlet所產(chǎn)生的內(nèi)容互動(dòng),舉例來(lái)說(shuō),根據(jù)下一步的連接或者是確認(rèn)送出的表單,結(jié)果 Portal將會(huì)接收到Portlet的動(dòng)作,將這個(gè)處理狀況轉(zhuǎn)向到目標(biāo)Portlet。這些Portlet 內(nèi)容的產(chǎn)生可能會(huì)因?yàn)椴煌氖褂谜叨胁煌淖兓耆歉鶕?jù)客戶(hù)對(duì)于這個(gè)Portlet的設(shè)置。
          1.3.2 Portlet與Servlet的關(guān)系
          Portlet被定義成為一個(gè)新的組件,具有新的明確的界面與行為。為了盡可能與現(xiàn)有的 Servlet 結(jié)合達(dá)到重復(fù)使用的目的,Portlet 的規(guī)范利用了 Servlet 的規(guī)范,許多觀念都很相似的,結(jié)合 Portlet、Servlet 及 Jsp 在同一個(gè)網(wǎng)站系統(tǒng)中,我們稱(chēng)為Portlet 應(yīng)用 。在同一個(gè) Portlet 應(yīng)用 中,他們將分享同一個(gè)類(lèi)加載器(ClassLoader),上下文(Context) 及 Session。
          ①、Portlet 和 Servlet 的相似之處
          @ Portlet 也是 Java 技術(shù)的 web 組件
          @ Portlet 也是有特定的 container 在管理
          @ Portlet 可以動(dòng)態(tài)產(chǎn)生各種內(nèi)容
          @ Portlet 的生命周期由 container 所管理
          @ Portlet 和客戶(hù)端的互動(dòng)是通過(guò) request/response 的機(jī)制
          ②、Portlet 和 Servlet 也有一些不同
          @ Portlet 只產(chǎn)生 markup 信息片段,不是完整的網(wǎng)頁(yè)文件。而 Portal 會(huì)將所有的 Portlet markup 信息片段放到一個(gè)完整的 Portal 網(wǎng)頁(yè)。
          @ Portlet 不會(huì)和 URL 有直接的關(guān)系
          @ 客戶(hù)端必須通過(guò) portal 系統(tǒng)才能和 Portlet 互動(dòng)
          @ Portlet 有一些定義好的 request 處理,action request 以及 render request。
          @ Portlet 默認(rèn)定義 Portlet modes 及窗口狀態(tài)可以指出在網(wǎng)頁(yè)中該 Portlet 的哪個(gè)功能正在執(zhí)行及現(xiàn)在的 狀態(tài)。
          @ Portlet 可以在同一個(gè) portal 網(wǎng)頁(yè)之中存在多個(gè)。
          ③、Portlet 有一些附加的功能是 Servlet 所沒(méi)有的
          @ Portlet 能夠存取及儲(chǔ)存永久配置文件及定制資料。
          @ Portlet 可以存取使用者數(shù)據(jù)
          @ Portlet 具有 URL 的重寫(xiě)功能在文件中去動(dòng)態(tài)建立連結(jié),允許 portal server 不用去知道如何在網(wǎng)頁(yè)的片 段之中建立連結(jié)及動(dòng)作。
          @ Portlet 可以?xún)?chǔ)存臨時(shí)性的數(shù)據(jù)在 Portlet session 之中,擁有兩個(gè)不同的范圍:
          application-wide scope 及 Portlet private scope 。
          ④、Portlet 不具有一些功能, 但是 Servlet 卻有提供
          @ Servlet 具有設(shè)置輸出的文字編碼( character set encoding)方式
          @ Servlet可以設(shè)置 HTTP 輸出的 header
          @ Servlet才能夠接收客戶(hù)對(duì)于 portal 發(fā)出的 URL 請(qǐng)求
          1.3.3 Portlet的生命周期
          一個(gè)Portlet有著良好的生命周期管理,定義了怎樣裝載,實(shí)例化和初始化,怎樣響應(yīng)來(lái)自客戶(hù)端的請(qǐng)求及怎樣送出服務(wù)。這個(gè)Portlet生命周期由Portlet接口的init,processAction,render和destroy方法來(lái)表達(dá)。
          載入和實(shí)例化:Portlet容器負(fù)責(zé)載入和實(shí)例化Portlet。當(dāng)Portlet容器運(yùn)行Portlet應(yīng)用或者延遲到Portlet需要服務(wù)使用者的請(qǐng)求時(shí),Portlet就會(huì)被載入并實(shí)例化。載入Portlet類(lèi)后,Portlet類(lèi)隨即被實(shí)例化。
          初始化:Portlet類(lèi)實(shí)例化后,Portlet容器還需要初始化Portlet。以調(diào)用Portlet去響應(yīng)客戶(hù)端的請(qǐng)求。Portlet容器呼叫Portlet接口中的init方法初始化Portlet。擴(kuò)展自PortletConfig的類(lèi)可以取出定義在部署描述文件中的初始化參數(shù),以及Resource Bundle。
          初始化異常:在 Portlet初始化期間,Portlet可能會(huì)丟出 UnavailableException 或 PortletException 異常。此時(shí),Portlet容器不能把 Portlet置入已啟動(dòng)的服務(wù),并且 Portlet容器必需釋放這個(gè) Portlet。 destory方法不能被呼叫,因?yàn)槌跏蓟徽J(rèn)為執(zhí)行失敗。發(fā)生 失敗后,Portlet容器會(huì)嘗試著重新實(shí)例化及初始化 Portlet。這個(gè)異常處理的規(guī)則是:由一個(gè)UnavailableException 指定一個(gè)不能執(zhí)行的最小時(shí)間,當(dāng)此異常發(fā)生時(shí),Portlet容器必需等到指定時(shí)間過(guò)去后才產(chǎn)生并且初始化一個(gè)新的 Portlet。
          在初始化過(guò)程中所丟出的 Runtime Exception異常,被當(dāng)作 PortletException 來(lái)處理。
          第四節(jié) Liferay Portal工作原理
          Portal系統(tǒng)根據(jù)需要由一個(gè)或者多個(gè)Portal頁(yè)面組成,每個(gè)Portal頁(yè)面包含零個(gè)或者多個(gè)的Portlet。每個(gè)Portlet呈現(xiàn)自己的信息內(nèi)容,以此實(shí)現(xiàn)內(nèi)容聚合。通過(guò)定義每個(gè)Portlet的可用權(quán)限,實(shí)現(xiàn)個(gè)性化的桌面信息定制。
          1.4.1 Portlet 樣式以及窗口狀態(tài)

          JCP組織提出的JSR168規(guī)范定義了Portlet的實(shí)現(xiàn)標(biāo)準(zhǔn)。每個(gè)Portlet對(duì)外表現(xiàn)為一個(gè)小窗口,有自己的默認(rèn)樣式和窗口狀態(tài)。如上圖,Portlet有自己的標(biāo)題,瀏覽狀態(tài)下支持編輯、關(guān)閉、上移、下移、最大化、最小化功能,編輯狀態(tài)下支持返回和關(guān)閉功能。從各種數(shù)據(jù)來(lái)源提取的信息以Portlet內(nèi)容的形式呈現(xiàn)在Portal中。
          Portlet樣式指出 Portlet正處于什么模式,Portlet通常會(huì)根據(jù)所處的模式而執(zhí)行不同的工作并產(chǎn)生不同的內(nèi)容。
          Portlet模式讓 Portlet決定它該顯示什么內(nèi)容和執(zhí)行什么動(dòng)作。調(diào)用一個(gè) Portlet的時(shí)候,Portlet 容器會(huì)提供一個(gè) Portlet模式給那個(gè) Portlet。當(dāng)在處理一個(gè)請(qǐng)求動(dòng)作時(shí),Portlet 的模式是可以用程序來(lái)改變的。
          JSR168規(guī)范定義了三個(gè)Portlet模式: 瀏覽、編輯和幫助,Liferay Portal支持其中的全部三個(gè)模式。同時(shí)Portal是可以根據(jù)使用者的角色,來(lái)決定是要提供(顯示)哪幾個(gè) Portlet 模式給使用者操作。
          例如,匿名使用者可以操作瀏覽和幫助等 Portlet 模式的內(nèi)容, 而只有授權(quán)過(guò)的使用者可以操作編輯這個(gè) Portlet 模式所提供的內(nèi)容或動(dòng)作。
          在瀏覽這個(gè)Portlet模式里,所被期望要提供的功能是產(chǎn)生標(biāo)記語(yǔ)言來(lái)表現(xiàn)此時(shí) Portlet的狀態(tài)。 舉例來(lái)說(shuō), Portlet的 瀏覽 模式可以包含一個(gè)或多個(gè)畫(huà)面讓使用者可以瀏覽與互動(dòng), 或是一些不需要與使用者互動(dòng)的靜態(tài)內(nèi)容。
             在編輯這個(gè)Portlet模式里, Portlet 需要提供內(nèi)容和邏輯來(lái)讓使用者定制 Portlet 的行為。典型的說(shuō),編輯模式的 Portlet 會(huì)設(shè)定或更新 Portlet 的參數(shù)設(shè)定值。
          在幫助這個(gè)模式里,Portlet應(yīng)該提供有關(guān)這個(gè) Portlet的幫助信息。這個(gè)幫助信息可以是有關(guān)這個(gè) Portlet的簡(jiǎn)單且條理清楚的視窗說(shuō)明或是詳細(xì)的說(shuō)明整個(gè)來(lái)龍去脈。所有的Portlet并不需要都提供幫助這個(gè)模式。
          一個(gè) Portlet可以根據(jù)窗口狀態(tài)來(lái)決定在一個(gè)頁(yè)面里該占多少空間。當(dāng)調(diào)用一個(gè) Portlet時(shí), Portlet容器 需要告訴該 Portlet目前的窗口狀態(tài)。 此時(shí) Portlet可以根據(jù)窗口狀態(tài)來(lái)決定它該對(duì)多少信息作處理。在處理請(qǐng)求的過(guò)程中, Portlet可以通過(guò)程序的方式來(lái)改變窗口狀態(tài)。
          1.4.2 Portal頁(yè)面


          每個(gè)Portal頁(yè)面包含零個(gè)或者多個(gè)Portlet小窗口,構(gòu)成一個(gè)完整的信息呈現(xiàn)頁(yè)面。Portal在啟動(dòng)之后根據(jù)Portlet配置文件等信息,給Portlet的標(biāo)題等屬性賦值,賦予Portlet編輯、關(guān)閉等各種控制按鈕,使Portlet成為一個(gè)標(biāo)準(zhǔn)的Portlet窗口。Portlet合并這些Portlet窗口,組成一個(gè)完整的文檔,即Portal頁(yè)面。每個(gè)Portlet都處于相應(yīng)的布局當(dāng)中,呈現(xiàn)事先定義的內(nèi)容,表現(xiàn)Portal公共的品質(zhì)。而且Portlet可以在不同的布局之間切換。Portlet響應(yīng)客戶(hù)端的請(qǐng)求,并將請(qǐng)求提交到相應(yīng)的URL進(jìn)行邏輯處理。
          Portlet開(kāi)發(fā)完畢之后,部署到Portal服務(wù)器,由Portal服務(wù)器負(fù)責(zé)組織、權(quán)限控制和呈現(xiàn)。Portal頁(yè)面創(chuàng)建過(guò)程如下:
          Portlet 在 Portlet容器內(nèi)執(zhí)行,Portlet容器接收 Portlet產(chǎn)生的內(nèi)容。通常 Portlet容器將這些內(nèi)容提交給 Portlet服務(wù)器,Portlet服務(wù)器依照這些內(nèi)容建立Portal頁(yè)面,然后將它傳給客戶(hù)端呈現(xiàn)。具體流程如下圖:


          Portal頁(yè)面的請(qǐng)求過(guò)程如下:
          使用者經(jīng)由客戶(hù)端設(shè)備(例如瀏覽器)存取 Portal,Portal 根據(jù)接收到的請(qǐng)求決定哪些 Portlet 需要被執(zhí)行以滿(mǎn)足需求。Portal 通過(guò)Portlet容器呼叫 Portlet,然后由 Portlet產(chǎn)生的片段建立Portal頁(yè)面,再傳回客戶(hù)端呈現(xiàn)給使用者。具體流程如下圖:


          第二章Liferay Portal的使用
                 Liferay Portal分為Professional 和 Enterprise兩個(gè)版本。
          Liferay Portal支持多個(gè)應(yīng)用服務(wù)器和Servlet容器。Liferay Portal Ent版本需要一個(gè)健壯的J2EE服務(wù)器,而Pro版本只要一個(gè)普通的Servlet服務(wù)器就可以運(yùn)行。如果需要運(yùn)行EJB,建議使用Pro版本。兩個(gè)版本的源碼和應(yīng)用接口都是一樣的。
          默認(rèn)的,Pro版本分別集成Tomcat / Jetty / Resin作為Web服務(wù)器,采用Struts作為Web框架,實(shí)現(xiàn)輕量級(jí)的系統(tǒng)架構(gòu)。Enterprise集成JBoss作為Web服務(wù)器,采用Spring作為Web框架,兼顧EJB。
          Liferay Portal默認(rèn)集成HSQL數(shù)據(jù)庫(kù),來(lái)持久化保存用戶(hù)自定義的數(shù)據(jù)。通過(guò)修改集成在Liferay Portal的Tomcat的部署描述文件,用戶(hù)可以更改數(shù)據(jù)源。Liferay Portal官方網(wǎng)站提供了數(shù)據(jù)庫(kù)表的生成腳本。
          下面以Pro版本(Tomcat服務(wù)器)為例,講述Liferay Portal的用戶(hù)策略、內(nèi)容布局、桌面和品質(zhì)。
          第一節(jié) Liferay Portal安裝
          由于Liferay Portal Pro版本集成了Tomcat服務(wù)器V5,所以只要把應(yīng)用包下載解壓就可以直接運(yùn)行。
          1、從 http://www.iferay.om/web/guest/downloads/portal_pro 下載Pro版本zip包, 解壓到目錄{PORTAL_HOME}, 目錄結(jié)構(gòu)相對(duì)普通的Tomcat增加了Liferay文件夾。Liferay是默認(rèn)的Web應(yīng)用。
          2、正確安裝JDK1.4或者JDK1.5,并在環(huán)境變量里面正確配置JAVA_HOME變量。


          3、從命令行啟動(dòng){PORTAL_HOME}/bin/startup.bat,啟動(dòng)Liferay Portal。
          4、在瀏覽器地址欄輸入http://localhost ,訪問(wèn)Portal首頁(yè)。
          5、用Login為test@liferay.com密碼為test的用戶(hù)登錄Portal系統(tǒng),得到的是一個(gè)Demo的首頁(yè)。


          如果啟動(dòng)呈現(xiàn)異常,請(qǐng)查看Tomcat控制臺(tái)查找原因。
          Liferay Portal啟動(dòng)之后,HSQL數(shù)據(jù)庫(kù)自動(dòng)啟動(dòng)。
          登錄系統(tǒng)后,點(diǎn)擊右上角“My Account”鏈接,在“Display”選項(xiàng)卡中將Language改為“Chinese(China)”,以便中文化Portal界面。
          第二節(jié) Liferay Portal的用戶(hù)策略
          Liferay Portal通過(guò)定義嚴(yán)謹(jǐn)?shù)挠脩?hù)策略、靈活的可個(gè)性化定制的內(nèi)容和布局以及豐富可定制的品質(zhì)策略,實(shí)現(xiàn)靈活的可定制的產(chǎn)品理念。
          Liferay Portal采用用戶(hù)-用戶(hù)組-角色-Portlet的關(guān)聯(lián)方式來(lái)實(shí)現(xiàn)用戶(hù)權(quán)限的管理。用戶(hù)錄屬于用戶(hù)組(也可以單獨(dú)存在),該用戶(hù)組具有某種(多種)角色,角色分配給用戶(hù)組,也可以直接分配給用戶(hù)。而操作某個(gè)Portlet 需要具有其指定的角色。下面通過(guò)實(shí)例操作,來(lái)了解和體驗(yàn)一下Liferay Portal的用戶(hù)管理策略。
          2.2.1 定義用戶(hù)
          Liferay Portal的用戶(hù)管理在系統(tǒng)管理的Portlet中。缺省只有系統(tǒng)管理員才能使用。登錄Portal后,可以在默認(rèn)的桌面上找到“系統(tǒng)管理”Portlet。如果沒(méi)有,從頁(yè)面底部的選擇框中選擇“系統(tǒng)管理”添加上。也可以通過(guò)右上角“CMS”桌面的“內(nèi)容和布局”頁(yè)面找到管理入口。
          從“系統(tǒng)管理”Portlet中選擇“用戶(hù)”項(xiàng),進(jìn)入用戶(hù)管理界面。


          2.2.2 添加用戶(hù)
          圖2.2.1-2所示頁(yè)面右邊為“新增用戶(hù)”列,填入你所要增加的用戶(hù)名稱(chēng),姓氏,用戶(hù)標(biāo)識(shí)(可自動(dòng)生成),郵件地址,密碼(可自動(dòng)生成)等。可以修改該用戶(hù)所具有的用戶(hù)組和角色信息(也可創(chuàng)建之后再修改)。用戶(hù)標(biāo)識(shí)必須是系統(tǒng)唯一的,所以請(qǐng)確保你所輸入的用戶(hù)標(biāo)識(shí)與已有的不沖突。
          點(diǎn)擊“新增用戶(hù)”,我們成功增加一位用戶(hù)標(biāo)示為“educhina”的用戶(hù),如圖2.2.1-2所示。左側(cè)列表中新增一項(xiàng)“educhina eamoi”。然后我們就可修改這位用戶(hù)的用戶(hù)組,角色,個(gè)人檔案等信息了。
          2.2.3 修改用戶(hù)
          選擇用戶(hù)列表中一項(xiàng),然后點(diǎn)擊底部的三個(gè)編輯按鈕,就可以分別編輯該用戶(hù)的用戶(hù)組、角色、檔案等信息了。
                 此處我們選擇用戶(hù)“educhina eamoi”,然后選擇“編輯檔案”,出現(xiàn)檔案編輯頁(yè)面。如圖2.2.3-3所示。填寫(xiě)你想要修改的信息,點(diǎn)擊對(duì)應(yīng)的“更新”按鈕即可完成修改。需要注意的是整個(gè)檔案頁(yè)面分成幾個(gè)部分,需要分別修改更新。
          選擇用戶(hù)“educhina eamoi”,然后選擇“編輯角色”,進(jìn)入角色編輯頁(yè)面,如圖2.2.3-4所示。左側(cè)列表框?yàn)楫?dāng)前該用戶(hù)所具有的角色,右側(cè)列表為所有可用的角色。要賦給用戶(hù)新角色,則從右側(cè)選擇一項(xiàng)或多項(xiàng),通過(guò)中間的轉(zhuǎn)移按鈕,從右側(cè)添加至左側(cè)。要?jiǎng)h減用戶(hù)角色,則從左側(cè)移至

          posted on 2007-05-28 10:01 junky 閱讀(806) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): portal

          主站蜘蛛池模板: 南昌市| 那坡县| 绥江县| 南阳市| 新昌县| 富源县| 东城区| 陕西省| 苏尼特左旗| 青铜峡市| 塘沽区| 南汇区| 张家川| 武安市| 达孜县| 东莞市| 塘沽区| 弥勒县| 建宁县| 彰化县| 湄潭县| 诏安县| 横山县| 静海县| 常熟市| 望城县| 新乐市| 汨罗市| 清水县| 通辽市| 南平市| 开封县| 惠安县| 上犹县| 大悟县| 公安县| 淅川县| 宁国市| 文化| 织金县| 含山县|