JAVA流通橋

          JAVA啟發(fā)者

          統(tǒng)計(jì)

          留言簿(3)

          AJAX相關(guān)網(wǎng)址

          Eclipse相關(guān)網(wǎng)址

          Hibernate

          java相關(guān)網(wǎng)址

          LINUX相關(guān)網(wǎng)址

          webwork相關(guān)網(wǎng)址

          友好鏈接

          閱讀排行榜

          評(píng)論排行榜

          Pluto是一個(gè)滿足Portlet API規(guī)范的Portlet容器的實(shí)現(xiàn)

          Pluto是一個(gè)滿足Portlet API規(guī)范的Portlet容器的實(shí)現(xiàn),它為開發(fā)者提供了一個(gè)運(yùn)行 portlets的工作平臺(tái)。然而,如果沒有一個(gè)驅(qū)動(dòng)器(driver),也就是Portal,的支持的話, 運(yùn)行和測(cè)試Portlet容器將非常之麻煩。Pluto本身也提供了一個(gè)簡單的Portal模塊,該模塊僅 僅是為了滿足Portlet容器和JSR 168的需要而寫的。如果你需要一個(gè)成熟的Portal,請(qǐng)參考 Jetspeed項(xiàng)目。Jetspeed項(xiàng)目關(guān)注的是Portal本身,而不是Portlet容器。

          圖1是Portal的基本體系結(jié)構(gòu)圖。Portal Web Application處理客戶的請(qǐng)求,從客戶的當(dāng)前 頁中提取出portlets,然后調(diào)用portlet容器來獲得每一個(gè)portlet的內(nèi)容。Portal通過 Portlet容器的Invoker API來訪問portlet容器。這些API是portlet容器的主要調(diào)用接口, 它們?yōu)镻ortal提供了一些基于請(qǐng)求的方法來調(diào)用portlet。容器的使用者(即Portal,譯者 注)必須實(shí)現(xiàn)portlet容器的Container Provider SPI(Service Provider Interface)回調(diào)接口,來為portlet容器提供與Portal相關(guān)的信息。最后,portlet容器通 過Portlet API調(diào)用所有的portlets。



          圖1:一個(gè)集成了Pluto的簡單Portal

          Portlet容器

          Portlet容器是portlets的運(yùn)行時(shí)環(huán)境,也是每一個(gè)Portal的核心組件。Portlet容器需要獲 取有關(guān)Portal本身的一些信息,還必須重用Portal的一些基本代碼。因此,Portlet容器可以 保證自己與其它的Portal組件之間是完全分開的。也就是說,你可以把一個(gè)獨(dú)立的Portlet容器 插入到任何一個(gè)Portal中去,只要它可以滿足Portlet容器的要求,比如實(shí)現(xiàn)了所有的SPI。

          Portlet容器的Invoker API(也被稱為進(jìn)入點(diǎn))是Portlet容器的主要調(diào)用接口。這些API包 含Portlet容器的生命周期控制方法(init(),destroy())和基于請(qǐng)求的調(diào)用方法 (initPage(),performTitle(),portletService()等等)。由于Portlet容器最終是 去調(diào)用一個(gè)portlet,故這些方法的簽名和Portlet API的主要portlet接口很類似,除了一個(gè) 須額外傳入的portlet ID。Portlet容器可以通過這個(gè)額外傳入的portlet ID參數(shù)來決定調(diào)用 哪一個(gè)portlet。

          除了可以使用Invoker API來調(diào)用Portlet容器外,Portal還必須實(shí)現(xiàn)Portlet容器定義的SPI。 因此,參考實(shí)現(xiàn)引入了“容器服務(wù)”的概念:容器服務(wù)用來定義一些能夠在容器中注冊(cè)的可插的組件, 這些組件要么提供一些基本的功能,要么對(duì)容器進(jìn)行擴(kuò)展。Pluto參考實(shí)現(xiàn)定義了下面這些內(nèi)建的 容器服務(wù)(前四個(gè)是運(yùn)行Portlet容器所必須實(shí)現(xiàn)的,而第五個(gè)則是可選的):

          • Information Provider(信息提供者):為Portlet容器提供關(guān)于Portal及 其框架的信息。通過該接口只能夠獲得一些已知的或存在Portal中的信息。這些信息包括帶 導(dǎo)航狀態(tài)(navigational state)的URL生成、portlet上下文(portlet context)、 portlet模式(portlet mode)和窗口狀態(tài)(window state)控制。
          • Factory Manager(工廠管理者):定義了如何通過工廠獲得一個(gè)實(shí)現(xiàn)(一般的 Portal應(yīng)該已經(jīng)實(shí)現(xiàn)了這樣的接口)。
          • Log Service(日志服務(wù)):定義了輸出日志的方法(一般的Portal應(yīng)該已經(jīng)實(shí) 現(xiàn)了這樣的接口)。
          • Config Service(配置服務(wù)):定義了如何獲得配置值(一般的Portal應(yīng)該已 經(jīng)實(shí)現(xiàn)了這樣的接口)。
          • Property Manager(屬性管理者,可選):該服務(wù)讓Portal可以獲得JSR 168 規(guī)范中定義的屬性的值。

          嚴(yán)格的說,Portlet Object Model(Portlet對(duì)象模型)也是一個(gè)SPI,但與其它的SPI相比, 它處在一個(gè)特殊的位置上。因此我們不把它看成是容器服務(wù)的一部分,因?yàn)樗幚硭械膒ortlet 對(duì)象,并包含了一些混雜的接口。



          圖2:Portlet容器的體系結(jié)構(gòu)

          Portlet的部署

          Portlet容器是構(gòu)建在Servlet容器之上的,所以它可以重用Servlet容器的許多功能。為了達(dá)到 這一點(diǎn),portlet容器必須把一些servlet的屬性注入到每一個(gè)portlet應(yīng)用的war文件中,如 圖3所示。Portlet組件的部署器將在原先的war文件中注入一個(gè)新的或者修改過的web.xml,再 為每個(gè)portlet注入一個(gè)servlet包裹器,以此作為調(diào)用點(diǎn)。然后,portlet部署器將把這個(gè)修 改過的war文件傳給應(yīng)用服務(wù)器的部署器,以此來把它部署到應(yīng)用服務(wù)器的系統(tǒng)中。當(dāng)一個(gè) portlet被調(diào)用時(shí),portlet容器將調(diào)用注入的servlet包裹器,把這作為被部署的portlet的 war文件的進(jìn)入點(diǎn)。



          圖3:參考實(shí)現(xiàn)中portlet的部署

          Pluto和WSRP標(biāo)準(zhǔn)

          JSR 168規(guī)范和Web Service for Remote Portlets(WSRP)標(biāo)準(zhǔn)有高度的一致性。這兩 個(gè)同時(shí)出現(xiàn)的標(biāo)準(zhǔn)都發(fā)布了開放源碼的實(shí)現(xiàn),它們的實(shí)現(xiàn)都完成了在相應(yīng)的規(guī)范中定義的所有必要 功能。這兩個(gè)標(biāo)準(zhǔn)都把能很好的互相協(xié)作作為它們共同的目標(biāo)。因此,WSRP portlets在 portlet容器中既可以作為消費(fèi)者運(yùn)行,也可以作為生產(chǎn)者運(yùn)行。

          Pluto項(xiàng)目必須支持在一個(gè)Portal中運(yùn)行多個(gè)portlet容器。因此,Pluto Portlet容器可以 被多次初始化。更重要的是,它可以以不同的方式運(yùn)行,每個(gè)portlet容器都使用一個(gè)不同的SPI 實(shí)現(xiàn)。

          posted on 2007-03-23 10:37 朱巖 閱讀(373) 評(píng)論(0)  編輯  收藏 所屬分類: Portal文章


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海晏县| 巩义市| 麟游县| 江油市| 禹城市| 巴林右旗| 大化| 扬中市| 玛多县| 东光县| 长沙市| 宕昌县| 阜宁县| 平原县| 丹凤县| 张掖市| 综艺| 孟连| 沿河| 和田县| 武清区| 泽州县| 北安市| 神池县| 长宁县| 信宜市| 武义县| 德令哈市| 石棉县| 永济市| 涟源市| 温泉县| 兰考县| 阿合奇县| 庆安县| 治县。| 眉山市| 红河县| 普兰县| 寿阳县| 唐山市|