Java portlets 是構(gòu)建在 JSR 168 portlet標(biāo)準(zhǔn)之上的,有時(shí)候他們被打包放在WAR(Web Application Archive)文件中提供給開發(fā)者使用。這篇文章就介紹了如何使用以WAR文件分發(fā)的 Java portlets。 | 下載作者提供的與本文相關(guān)的文件。 |
從WebLogic Portal 8.1 SP3開始,有兩種新方法能使打包在WAR文檔中的portlets可以在門戶中被訪問。您可以將portlets集成為已有門戶web應(yīng)用的一部分,或者選擇將portlets放在單獨(dú)的web應(yīng)用中。我們將分別利用Portlet Preparer Tool和Web services for Remote Portlets(WSRP)來展示這兩種方法。您可以根據(jù)自己的需求選擇最適合的方式:
· 單一WAR文件——使用portlet preparer 工具將WAR內(nèi)容集成到現(xiàn)有項(xiàng)目中。如果您正在使用一小部分第三方portlets和您自己的門戶項(xiàng)目,這種方式比較適用。
· 多個(gè)WAR文件——利用WSRP,可以將portlets保存在一個(gè)單獨(dú)的WAR中,并從目標(biāo)門戶項(xiàng)目中引用它。如果您有大量項(xiàng)目擁有多個(gè)第三方portlets,最好考慮這種方式。
下面我們將詳細(xì)介紹這兩種方式。
單一WAR文件——使用Portlet Preparer工具
Portlet Preparer Tool作為一種工具可以從dev2dev網(wǎng)站獲得:
http://dev2dev.bea.com/codelibrary/code/portletpreparer.jsp
這個(gè)工具從包含在WAR文件中的JSR168 portlets中創(chuàng)建.portlet文件,因此允許WebLogic Workshop將此文件的內(nèi)容導(dǎo)入到一個(gè)門戶Web項(xiàng)目中。運(yùn)行preparer 工具的步驟是簡單而直觀的,有如下兩種可選方式:
· 將portlets添加到一個(gè)新的項(xiàng)目。
· 將portlets添加到一個(gè)現(xiàn)有門戶項(xiàng)目中。
以下是對(duì)于每種方式的步驟:
將portlets添加到一個(gè)新的項(xiàng)目
要導(dǎo)入一個(gè)包含JSR168 portlets 的WAR文檔,完成以下步驟:
1. 將portletConverter.jar解壓縮到硬盤的一個(gè)臨時(shí)目錄中(以下我們稱此目錄為<converter-root>)。
2. 將WAR文件移到<converter-root>中。
3. 將WEBLOGIC_HOME設(shè)置為env.sh 或者 env.bat(依平臺(tái)而定)。
4. 運(yùn)行env.sh 或者 env.bat(依平臺(tái)而定)。
5. 運(yùn)行ant -Dwar.file=(<war-file-name>是WAR文件的文件名)。
6. 在<converter-root>下生成一個(gè)叫做tempDir的目錄。
7. 打開WebLogic Workshop并將tempDir作為一個(gè)門戶Web項(xiàng)目導(dǎo)入。
將Portlets添加到一個(gè)現(xiàn)有門戶項(xiàng)目中
要在現(xiàn)有門戶Web應(yīng)用中添加portlets,需要完成以下步驟:
1. 完成上述的第1-7步。
2. 復(fù)制所有必需的類文件到WEB-INF\classes目錄,同時(shí)復(fù)制所有必需的jar文件到WEB-INF\lib目錄。
3. 對(duì)web.xml作必要的修改(例如:servlet定義)。
4. 向每個(gè)加入的portlet的portlet.xml文件中添加元素(這些拷貝來自前面創(chuàng)建的tempDir 目錄中的portlet.xml)。
5. 從tempDir\portlets中拷貝.portlet文件到您的Web應(yīng)用中。
6. 將portlets添加到您的門戶。
多個(gè)WAR文件:使用遠(yuǎn)程 Portlets Web 服務(wù)(WSRP)
利用WSRP,您可以在單獨(dú)的Web應(yīng)用中部署Java portlets,并從門戶項(xiàng)目中引用它們。要了解關(guān)于WSRP如何工作的更多信息,請(qǐng)?jiān)L問以下鏈接并下載WebLogic Portal 8.1 SP3:
· WSRP 概述: http://dev2dev.bea.com/products/wlportal81/articles/wsrp.jsp
· (下載WebLogic Portal 8.1 SP3) http://commerce.bea.com/index.jsp
以下場景中SamplePortal是一個(gè)主門戶,從這里您可以創(chuàng)建到其他WAR文件中portlets的引用。這樣就可以將不同WAR文件的portlets導(dǎo)入到SamplePortal中。
1. 創(chuàng)造一個(gè)不同的新門戶項(xiàng)目。并按“將portlets添加到一個(gè)新的項(xiàng)目”中所描述的七個(gè)步驟來操作。
2. 啟動(dòng)門戶示例的域,并登錄到以下Administration Portal中:http://localhost:7001/portalAppAdmin .
3. 在Portals標(biāo)簽下,點(diǎn)擊左邊的Library。
4. 當(dāng)樹展開時(shí),點(diǎn)擊Portlet Producers圖標(biāo)。
5. 當(dāng)producer資源面板出現(xiàn)在右側(cè)后,點(diǎn)擊“Browse/Add Producers”標(biāo)簽。
6. 在“Enter Producer to Browse”框中輸入:http://localhost:7001/<new portlet war file>/producer?wsdl,點(diǎn)擊“ok”。
7. 此時(shí)您將看到一列producer的屬性,包括可用的portlet。點(diǎn)擊“Add Producer”并且填寫注冊區(qū)域。
8. 注冊之后,您將處于“ Available Producers ”窗口中。在“ Available Producers”框中,點(diǎn)擊“Register”按鈕,在對(duì)話框中,點(diǎn)擊“Save”。
9. 點(diǎn)擊您注冊的Producer,并從門戶中選出需要引用的portlet。
這時(shí),點(diǎn)擊庫目錄中的“All Portlets”就可以看到剛剛添加的遠(yuǎn)端portlet。在Available Portlets 框的Category下拉菜單中還有一個(gè)方便的portlet類別,“All Remote Portlets,”?,F(xiàn)在您可以將遠(yuǎn)端portlet加入一個(gè)頁面中供用戶使用。
在此場景中,SamplePortal將扮演一個(gè)消費(fèi)者的角色,而您的其他web應(yīng)用將成為producer角色。
使Pluto Test Suite Portlets在SamplePortal中可用
下面用一個(gè)例子來重點(diǎn)說明在多個(gè)WAR文件中使用portlets?;舅枷胧窃谝粋€(gè)web應(yīng)用中為其他web應(yīng)用的WebLogic Portal提供一組可用的portlets。
在下面的例子中,我們從Apache下載了Pluto test portlets(JSR 168 - test suite)。接下來,我們創(chuàng)建一個(gè)新的web應(yīng)用,使用portlet工具來導(dǎo)入WAR文件,最終使用WSRP來使他們在門戶web應(yīng)用中可用。
1. 從Apache上下載最新的Pluto test suite portlets(出于方便起見,本文中我們附帶了一份拷貝)。
2. 使用 Portlet工具使WAR 為WebLogic Workshop導(dǎo)入做好準(zhǔn)備。
注意,圖中.portlet文件已經(jīng)創(chuàng)建,同時(shí)WAR也已做好導(dǎo)入的準(zhǔn)備。
3. 執(zhí)行作為一個(gè)門戶項(xiàng)目(獲得168支持)的WAR文件的導(dǎo)入步驟。在Workshop中從您的應(yīng)用點(diǎn)擊導(dǎo)入選項(xiàng)就可以實(shí)現(xiàn)。
編輯portlet.tld文件,指向JSR 168標(biāo)準(zhǔn)的BEA實(shí)現(xiàn)(出于方便考慮,本文中我們附帶了一個(gè)拷貝)
這時(shí),您已經(jīng)創(chuàng)建了一個(gè)新的web應(yīng)用,并導(dǎo)入了168 portlets。現(xiàn)在讓他們可以在其他web應(yīng)用中使用。這個(gè)例子使用了SamplePortal web應(yīng)用。有兩種方式可以將這些portlet帶入SamplePortal。您可以在Workshop中使用portlet wizard為新建的web應(yīng)用創(chuàng)建一個(gè)引用,另外,您也可以在管理門戶中創(chuàng)建一個(gè)引用。
下面的步驟將使用管理門戶。確保已有一個(gè)門戶和創(chuàng)建好的桌面。在這個(gè)例子中,可以使用SamplePortal模板生成一個(gè)門戶“P1”和一個(gè)桌面“D1”。
1. 登錄到管理門戶。
2. 在SamplePortal中添加一個(gè)新頁面,并且命名為Pluto Test。
3. 進(jìn)入庫中,選擇portlet producers,并添加一個(gè)新的producers。
4. 輸入地址:http://localhost:7001/<new_web_app>/producer?wsdl
5. 執(zhí)行添加producer并且注冊。
6. 返回并選擇需要添加的portlet。在這個(gè)例子中,我們選擇了“Test Portlet #1”,它是Pluto Test suite的一部分。
7. 切換到desktop“D1”,并選擇添加一個(gè)portlet,選擇“Test portlet #1”。
當(dāng)啟動(dòng)桌面時(shí),您將看到一個(gè)新的名為“Pluto Test”的頁面,在頁面中您將看到來自位于另一個(gè)單獨(dú)web應(yīng)用的Pluto test suite中的“Test Portlet #1”。
注意:SamplePortal位于sampleportal web應(yīng)用中,而Pluto Test Suite Portlets位于我們創(chuàng)建的新Pluto web應(yīng)用中。
其他需要考慮的事項(xiàng)
一個(gè)可能會(huì)降低部署時(shí)間的因素是使用了門戶項(xiàng)目的縮微版本。您可以創(chuàng)建自己的只支持JSR 168而不支持其他服務(wù)的項(xiàng)目。與門戶內(nèi)容管理服務(wù)、Java頁面流和其他非168服務(wù)相關(guān)的標(biāo)簽都將被刪除。
聯(lián)系客服