在 Web Content Management 中使用 Rendering Portlet 進行內容展現
Rendering Portlet 是由 IBM Web Content Management 提供的,用於展現 Web 內容的 Portlet 元件。
IBM Web Content Management 是包含在 WebSphere Portal 的 Enable 和 Extend 版本中的 Web 內容管理元件,提供了在 Portal 環境下通過 Web 頁面或 Portlet 建立、管理和釋出 Web 內容的方式。使用 Web Content Management 可以建立和管理因特網、內部網、外部網以及 WebSphere Portal 站點的 Web 內容,還可以使用它來向使用者展現 Web 站點中的 Web 內容,包括由文件管理器管理或由使用者個性化生成的內容。使用 Web Content Management 可以使 Web 站點的設計、頁面設計,和內容提供以及內容評閱的工作完全分開,能夠讓具有不同技能的人員獨立工作,從而高效的建立和管理 Web 內容。
當網站開發人員使用 IBM Web Content Management 完成了網站開發工作後,可以使用 Web Content Management 提供的 Servlet、預呈現和 Rendering Portlet 三種展現方式來對 Web 內容進行釋出。其中,Rendering Portlet 方式提供了一種在 Portal 頁面中,以 Portlet 元件的形式對 Web Content Management 站點、站點區域、內容、內容元素和元件等進行展現的方法。 Rendering Portlet 包括部署在本地 Web Content Management 伺服器中的 Local Rendering Portlet,和部署在遠端的 WebSphere Portal 伺服器中的 Remote Rendering Portlet。
使用 Rendering Portlet 有著種種特有的優勢,本文將予以詳細的介紹。
在 Web Content Management(Web 內容管理,以下簡稱 WCM)中,為了對 Web 內容進行展現,需要首先完成對站點的設計和建造。其中包括構建 Web 站點的結構,編輯演示模板,匹配編寫模板與演示模板,製作 Web 內容和元件,型別 ( 分類 , 型別 ),Web 站點元件訪問許可權的控制等工作。最後通過適當的展現方法將 Web 內容展現給終端使用者。
WCM 提供了預呈現,WCM Servlet 和 Rendering Portlet 三種對內容展現的方式,每種內容展現的方式都有其各自的優缺點。
預呈現的展現方式,是利用 WCM 提供的快取機制,以自動或手動的方式對 Web 的站點內容進行快照,生成針對特定時間和特定使用者的靜態網頁內容,以HTML 檔案的方式儲存在磁碟中。終端使用者可以通過 WCM 或 Web 伺服器直接訪問。由於終端使用者訪問的是靜態的網頁內容,所以預呈現展現方式三種內容展現方式中,能夠提供最快的訪問速度的展現方式。
但是由於預呈現方式生成的是靜態的網頁檔案,所以使用上會受一些特殊的限制:
- 採用預呈現方式, Web 內容所設定的訪問許可權控制將被忽略
採用預呈現方式時,在 Web 內容專案上所設定的讀取許可權將不被進行處理。預呈現後使用者所能訪問的內容是以配置檔案中所指定的使用者為標準的。對 Web 內容訪問時將忽略使用者角色,返回的均為這個特定使用者訪問時的內容。
- 預呈現站點路徑受到 Web Content Management 伺服器所在的作業系統的限制
由於預呈現是將 Web 站點以目錄樹和 HTML 檔案的方式儲存到磁碟中,所以在使用中會受到具體伺服器檔案系統的的限制。例如
- 站點、站點區域和內容的命名必須符合所在檔案系統的命名規範,不能包括檔案系統中的非法字元。
- 站點的路徑結構需要符合所在檔案系統的目錄路徑規則,不能超過檔案系統的最大路徑長度。如 Windows 的最長目錄路徑不能超過 255 個字元,Linux 的最長目錄路徑不能超過 1024 個字元。
- 不能對 JSP 元件進行預呈現
JSP 元件是 WCM 提供的用於引用 JSP 檔案的元件,JSP 檔案(JavaServer Pages)是使用 Java 程式語言在 HTML 檔案中插入 Java 程式段和 JSP 標記來生成動態網頁。 WCM 可以使用 WCM 標記和 WCM 的 API 將 WCM 內容和元件加入到 JSP 檔案中。
由於 JSP 是伺服器端執行的動態指令碼,需要在使用者請求時由伺服器動態的執行。而預呈現後是生成靜態的 Web 頁面,所以無法對 JSP 元件進行呈現。
- 不能使用編寫伺服器進行預呈現
實際的專案開發過程中,一般包括編寫伺服器,登臺伺服器和交付伺服器。編寫伺服器用於內容的開發和編寫,登臺伺服器用於聚集編寫伺服器對於釋出網站的內容的修改並將修改資料交付給交付伺服器展現給終端使用者,詳細的介紹請參考“網路拓撲結構”一章。
因為在進行站點預呈現的過程中,Web 站點儲存庫是被上鎖的,其它操作不能再對其進行訪問。所以進行預呈現時,需要在專門的登臺伺服器上進行,不能在編寫伺服器上執行。
- 只能對站點和內容進行預呈現
由於預呈現所使用的是 WCM 的快取機制,而快取模組所應用的客體只限定於站點或站點內容。所以只能對站點或內容進行預呈現,不能僅對單獨的元件或元素進行展現。
元素是 WCM 提供的用以儲存或生成不同型別的 Web 內容,可以儲存在站點、站點區域、內容項或元件中;元件用來儲存單個元素,每種元素型別都有不同的型別元件。由於元素和元件不存在自己的上下文,所以不能對單獨的元件或元素進行預呈現展現。
所以預呈現方式適用於具有簡單需求的不需要個性化的應用,而不適用於動態的複雜的 Web 內容展現。
使用者可以通過瀏覽器訪問,以 URL 的方式呼叫 WCM Servlet,對 Web 站點或特定的 Web 內容或元件進行展現。
使用 WCM Servlet 的方式通過設定呼叫 Servlet 的不同引數來達到 Web 內容展現的目的。 URL 的模式如下所式:
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]?srv=[SRV]&cache=[CACHE]&expires=[EXPIRES]
其中的引數包括:
- PATH,路徑
指向用於展現的站點、站點區域或內容的路徑。在展現元件時,這是顯示該元件的站點、站點區域或內容項的路徑。
- SRV,渲染實體
可以是元件、元素或 Web 頁面。由於 Web 頁面是由 PATH 引數隱含指定的,所以當展現物件為 Web 頁面時,該引數可以省略。
- CACHE,快取種類
是一個可選引數,用於設定快取的種類,快取型別包括當前站點、當前會話、當前使用者等。
- EXPIRES,過期時間
同 CACHE 同時使用的可選引數,用於指定快取的過期時間。有絕對過期時間和相對過期時間兩種形式。
使用 WCM Servlet 方式,能夠在呈現時動態的設定快取種類和過期時間。但是所有對使用者展現得 Web 內容都要由 WCM 提供。不能應用 WebSphere Portal 中所使用的主題、皮膚等公有設施。同時展現引數以 URL 引數的方式提供,當由人工手動輸入時,可能會由輸入錯誤導致展現失敗。
Rendering Portlet 是由 WCM 提供的用於展現 Web 內容的 Portlet 。使用 Rendering Portlet 可以在 Portal 頁面中展現 WCM 的內容、元件和元素,是 WCM 客戶使用最廣泛的內容展現方式。
使用 Rendering Portlet 進行 Web 內容展現,允許 Web 內容、元件和元素在 WebSphere Portal 中進行展現。而且可以使用 WebSphere Portal 所提供的各種底層基礎設施,同時在展現頁面上可以直接使用現有的豐富的 Portlet 協助進行展現。這樣在進行 Web 站點設計和建造過程中,開發人員可以將注意力集中於 Web 內容的展現上。而其它輔助功能可以直接使用其它 Portlet 來提供,細化了開發粒度,降低了開發風險。
與其它兩種呈現方式相比,Rendering Portlet 具備其獨特的優點:
- 與 WebSphere Portal 天然的聯合,
- 在頁面中可以直接使用 WebSphere Portal 提供的豐富的 Portlet,如日曆,天氣等 Portlet 。
- 使用 WebSphere Portal 定義的主題和皮膚。簡化了 Web 內容的美工設計。
- 使用 WebSphere Portal 提供的拖放功能。可以使用滑鼠的託拽,無需程式設計,自由的定位 Rendering Portlet 在頁面中的位置,從而改變 Web 內容在 Portal 頁面上顯示的位置。
- 強大的搜尋功能。 Servlet 方式只能使用在網頁中定義搜尋表單,在表單中包含搜尋元素的方式。而 Rendering Portlet 可以通過搜尋元素,搜尋中心或“搜尋和瀏覽 Portlet ”的方式對 Web 站點進行搜尋。
- 使用 Portlet 的設定模式
- 通過 Rendering Portlet 提供的“編輯共享設定”和(或)“配置”模式,以圖形化介面的方式設定所展現的站點、內容或元件 / 元素等屬性。避免了使用 WCM Servlet 方式手工輸入時可能導致的錯誤。
- 對終端使用者完全遮蔽 Web Content Management 伺服器的資訊。同時還可以通過對 Rendeirng Portlet 的訪問許可權的控制,來間接的控制終端使用者對 Web 內容的訪問。擁有較高的安全性和靈活性。
- 其它優點
- 可以和 WCM 編寫伺服器部署在同一個 WebSphere Portal 中(Local Rendering Portlet),也可以部署在單獨的 WebSphere Portal 中(Remote Rendering Portlet),擁有較靈活的部署方式。
- 在 Rendering Portlet 中擁有比其它兩種方法更為靈活、安全的設定方法。在使用 Rendering Portlet 進行站點呈現時,既可以使用儲存在 WCM 中的屬性,同時還可提供備用的演示模板作為沒有匹配的演示模板時的的備用方案,還可以通過額外的概要檔案來追加使用者類別,從而更好的適應使用者個性化需求的快速變化。
- Rendering Portlet 支援多個 Portlet 之間的互動,可以較容易的設定多個 Portlet 之間的協同,使每一個 Portlet 只展現單一的內容,減小了開發粒度,提高了開發質量。
- Rendering Portlets 使用實時的機制從 WCM 伺服器中提取內容,對頁面的使用者進行展現,可以適應動態的複雜的應用。
Local Rendering Portlet 和 Remote Rendering Portlet 的比較
本章節通過對兩種 Rendering Portlet 的比較,可以使使用者瞭解到如何根據實際情況選擇適合種類的 Rendering Portlet 來進行內容展現。
WebSphere Portal 提供了 Local Rendering Portlet 和 Remote Rendering Portlet 兩種型別的 Rendering Portlet 。兩種 Portlet 都可以用來展現 WCM 內容,所不同的是 Local Rendering Portlet 需要與展現內容所在的 WCM 應用部署在同一個 WebSphere Portal 例項上,而 Remote Rendering Portlet 可以與展現內容所在的 WCM 應用部署在不同的 WebSphere Portal 例項上。
由於 Local Rendering Portlet 同 WCM 應用部署在同一個 WebSphere Portal 例項上,所以 Local Rendering Portlet 可以直接訪問 WCM 中儲存的資料,訪問速度較快,網路訪問路徑較短。如圖 1 所示:
圖 1. Local Rendering Portlet 示例
Remote Rendering Portlet 同 WCM 應用部署於不同的 WebSphere Portal 例項上,通過遠端方式訪問 WCM 應用例項。 Remote Rendering Portlet 使用憑證保險庫槽或單點登陸的方式同遠端 WCM 應用進行通訊,所以網路的訪問路由較長,但是由於 WCM 應用執行在遠端的伺服器上,所有對交付伺服器的資源佔用較小。圖 2 是 Remote Rendering Portlet 的訪問原理圖:
圖 2. Remote Rendering Portlet 示例
Remote Rendering Portlet 可以部署在 WebSphere Portal 5.1.0.x 之後的版本上。這對於企業應用非常重要,由於交付伺服器在升級時,舊的 WebSphere Portal 應用程式有可能要重寫和測試,需要一個較長的週期。這樣就可以首先升級編寫伺服器,而將新版本的 Remote Rendering Portlet 部署在舊版本的交付伺服器上,使用升級後的新版本提供的功能。其它 WebSphere Portal 應用程式經過完全測試後再升級交付伺服器。
通過以上分析,Local Rendering Portlet 和 Remote Rendering Portlet 的主要區別總結為如表 1 所示:
表 1. Remote Rendering Portlet 和 Local Rendering Portlet 的比較
專案 Remote Rendering Portlet Local Rendering Portlet 訪問吞吐量 較小 較大 授權數(價格) 較多 較少 可部署於防火牆後 是(注:不啟用由“WCM 伺服器生成標準URL”) 否 交付伺服器的資源佔用 低 高 可單獨升級 WCM 是 否 管理複雜度 高 低 網路使用量 高 低 硬體 / 資源使用 低 高 是否需要調校 是 是
客戶應該根據實際的應用環境,綜合考慮以上因素,選擇適當的 Rendering Portlet 型別來進行 WCM 內容的展現。
首先,在建設網站時,一般會包含開發階段和交付階段,即最初網站開發人員會在一個開發環境上進行內容的編寫和開發,隨後再將內容直接複製到生產階段並交付給使用者,這樣可以有效的區分出開發和生產階段。當網站內容經常變動時,可以再增加一個登臺階段,登臺階段可以逐步聚集對網站的更改並將更改以批量方式交付給生產階段;也可以逐步聚集多個編寫伺服器的內容,然後以辛迪加的方式複製給交付階段,這樣可以有效的減少交付階段內容的頻繁改動而造成的網站的頻繁改動。
使用 WCM 時的應用方案一般也都會包含這三個階段,每個階段通常會安裝一個 WCM 應用例項,各階段 WCM 例項之間的 Web 內容使用 WCM 提供的辛迪加方式進行復制,辛迪加方式是 WCM 應用程式用於將資料從 WCM 的一個例項傳輸到另一個例項的方法,通過辛迪加複製的方式可以實現將 WCM 內容從編寫伺服器到登臺伺服器,以及從登臺伺服器到交付伺服器的複製,極大地方便了資料從開始的編寫階段到最終交付階段的複製。下圖是一個使用 Local Rendering Portlet 實現 WCM 內容交付的網路環境部署圖:
圖 3. Rendering Portlet 網路環境部署示例
圖 3 的部署例項中包含有三個階段,編寫階段、登臺階段和交付階段,分別對應為編寫伺服器、登臺伺服器和交付伺服器,每個伺服器上安裝有一個 WCM 應用例項,Web 內容由編寫伺服器以辛迪加方式逐步的複製到交付伺服器的 WCM 例項上。
使用者可以在編寫伺服器上開發建設網站所使用的基本資源,例如,共用的編寫模板、演示模板、圖片檔案等資源。
本應用方案還包括了測試環境,即上圖中的測試伺服器。當網站建設完成或者是對 Web 站點做了更改之後,可以使用測試環境進行交付前的測試,檢視更改對於網站有什麼樣影響,當測試通過後,就可以做後續的更改並交付給客戶了。
通常為保護內部的 WCM 應用程式和資源,在登臺應用程式和交付應用程式之間可以使用防火牆,這樣可以阻止有許可權訪問 Web 站點的使用者訪問位於防火牆之後的編寫應用程式和登臺應用程式,有效的提高了網路的安全性。
在進行實際的網站建設時,需要考慮到很多因素,例如網路環境、WebSphere Portal 安全性、系統穩定性、冗餘性、容錯性等等。所以客戶需要具體情況具體分析以部署出做合理的網路結構。
Local Rendering Portlet 可以用來展現與其部署在同一個的 WebSphere Portal 例項上的 WCM 內容,它隨 WCM 產品一同安裝。具體安裝操作方式為執行 WCM 的配置任務 configure-wcm-authoring:
Windows:
\config\WPSconfig.bat configure-wcm-authoring UNIX: /config/WPSconfig.sh configure-wcm-authoring
其中
為安裝了 WebSphere Portal 的主目錄,config 目錄中存放了配置 WebSphere Portal 所用的配置檔案以及配置工具。 該配置任務在建立 WCM 的管理頁面的同時也部署了編寫 Portlet 以及 Local Rendering Portlet 。安裝過程同時為 WebSphere Portal 的所有認證使用者設定了對 Local Rendering Portlet 有特權使用者的訪問許可權,即 WebSphere Portal 的認證使用者具有對 Local Rendering Portlet 檢視以及個性化設定的許可權。在該安裝任務完成之後,需要重新啟動 WebSphere Portal 伺服器使安裝的生效。
Remote Rendering Portlet 可以部署在與需要展現的 WCM 內容的 WebSphere Portal 例項不同的 WebSphere Portal 伺服器上,通過必要的憑證資訊以遠端方式訪問位於不同伺服器上的 WCM 服務。 Remote Rendering Portlet 可以安裝部署在 5.1.0.x 版本之後的的 WebSphere Portal 伺服器上,其安裝方式與其他的 Portlet 非常類似,通過 WebSphere Portal 提供的 “ Web 模組” 管理頁面進行安裝。
要安裝 Portlet,使用者需要有對該 WebSphere Portal 的管理員的許可權。首先,Remote Rendering Portlet 的 war 包檔案必須要存放於本地目錄中,該 war 包檔案一般存放於 WebSphere Portal 伺服器的安裝主目錄中的 installableApps 路徑下,該目錄中存放了所有 WebSphere Portal 提供的 Portlet 的 war 包檔案。 war 包檔案為封裝了 Portlet 應用程式的檔案,包含了 Portlet 的描述性資訊以及 Portlet 類和資源,安裝 Portlet 過程中會將 war 包檔案上傳到伺服器,解包並將所有資源放在伺服器檔案系統裡。
Rendering Portlet 安裝完成之後,管理員使用者可以通過 WebSphere Portal 提供的“ Portlet ”管理頁面,根據實際應用情況為指定的組或使用者制定對 Rendering Portlet 的訪問許可權,從而使有許可權的使用者可以使用 Rendering Portlet 。
通過 WebSphere Portal 提供的“ Portlet ”管理頁面可以檢視 WebSphere Portal 伺服器安裝了哪些 Portlet,Rendering Portlet 安裝完成之後,也可以在該管理頁面中查詢到。 Local Render Portlet 和 Remote Rendering Portlet 分別對應名稱為“ Web 內容檢視器”和“遠端 Web 內容檢視器的 Portlet ”。
註明:當需要使用 Rendering Portlet 進行內容展現時,需要將 Local Rendering Portlet 或 Remote Rendering Portlet 加到 Portal 頁面中。
同大多數 Portlet 一樣,Rendering Portlet 也提供了三種配置方式:配置模式,編輯共享設定模式以及個性化設定模式。不同許可權的使用者可以執行的操作模式是不同的,不同的配置方式對所作的更改對於使用者和 Portlet 的影響也是不同的。
- 配置模式,該配置方式需要使用者擁有對該 Rendering Portlet 管理員以上的許可權,這種模式對 Rendering Portlet 所作的配置更改會對所有 WebSphere Portal 使用者的所有 Portlet 例項生效,不管 Rendering Portlet 是載入在哪個 Portal 頁面上。
- 編輯共享設定模式,該配置方式需要使用者擁有對該 Rendering Portlet 編輯者以上的許可權,這種模式對 Rendering Portlet 所作的配置更改會使所有 WebSphere Portal 使用者只對該 Rendering Portlet 例項生效,而不會影響到其他的 Rendering Portlet 例項。在使用者使用編輯共享設定模式對 Portlet 做了配置之後,以配置模式對該 Portlet 例項所做的設定便不再生效了。
- 個性化設定模式,該配置方式需要使用者擁有對該 Rendering Portlet 特權使用者許可權,這種模式對 Rendering Portlet 所作的配置僅會對該 WebSphere Portal 使用者的該 Rendering Portlet 例項生效,即其他的使用者看不到這個使用者對於這個 Rendering Portlet 例項所作的配置更改。
下面的這個例子詳細的描述了三種配置方式對於使用者和 Rendering Portlet 產生的影響的區別。現有使用者 userA、userB、userC,分別對 Rendering Portlet 具有管理員許可權、編輯者許可權和特權使用者許可權,這樣的許可權設定使得使用者 userA 可以以配置模式更改 Rendering Portlet 的配置,userA 和 userB 可以以編輯共享設定模式更改 Rendering Portlet 的配置,而 userC 能夠以個性化設定的模式對 Rendering Portlet 進行配置更改。這時我們再以 WebSphere Portal 管理員的身份建立兩個 Portal 頁面,Page1 和 Page2,設定頁面的訪問許可權使得三個使用者均具有對 Page1 和 Page2 頁面的編輯者許可權。在每個頁面上分別加上兩個 Rendering Portlet,Page1 上有 Portlet1-1, Portlet1-2 ; Page2 上為 Portlet2-1,Portlet2-2,如圖 4 所示:
此時:
如果使用使用者 userA 對 Page1 上的 Portlet1-1 以配置模式進行 Portlet 配置,所作的更改會影響到 Page1 以及 Page2 上的所有的 Rendering Portlet 例項,使用者 userA,userB 和 userC 都可以看到所作的更改;
若以 userA 或 userB 用編輯共享設定的模式更改 Page1 頁面上的 Portlet1-1 的設定,這種情況下 userA、userB 和 userC 可以看到僅在 Page1 的 Portlet1-1 上更改生效了,其他的 Portlet 都沒有變化;
第三種情況則是以 userC 使用者更改 Page1 頁面上 Portlet1-1 的個性化配置,此時,更改只會被 userC 看到,而且,更改只生效在 Portlet1-1 上面。
使用者通過選擇 Portlet 標題欄中的配置,編輯共享設定或個性化設定按鈕,可以進入 Rendering Portlet 的配置頁面,Local Rendering Portlet 的配置頁面如圖 5 所示:
從上面的圖 5 中可以看出 Local Rendering Portlet 的配置主要包括四個部分:
- 選擇在 Rendering Portlet 中展現的內容、庫元件或者內容元素項
在 Rendering Portlet 中可以展現內容、庫元件或者是內容元素項。在選擇展現不同型別的項時,所需要設定的展現上下文也是不同的:
- 展現內容項,選擇展現的是 WCM 中的內容。該內容必須是已經發布的 WCM 內容,同時它的父站點中應當正確設定了展現時所需要的編輯模板和演示模式的對映,否則,我們需要必須為展現的內容在備用演示模板部分選擇備用的演示模板;
- 展現庫元件項,選擇展現的是 WCM 庫裡的元件,可以是選單元件、導航元件或影像元件等等。在展現元件時,需要展現的元件選擇一個 WCM 內容作為展現時的上下文;
- 展現內容元素項,內容元素是 WCM 內容中包含的元素,所以在展現元素時首先需要選在元素所在的 WCM 內容,然後再選擇要展現的內容中的元素。同樣的,這裡選擇的 WCM 內容也是 WebSphere Portal 已經發布的內容。
- Rendering Portlet 概要檔案配置
這個配置部分的功能是 WebSphere Portal 6.0.x 之後的版本新增加的,與 WCM 中的選單元件配合使用。
選單元件是 WCM 提供的用於顯示內容項中的後設資料或者內容的元件,顯示的內容項與選單元素中配置的搜尋條件相匹配,可以是站點區域、編寫模板、類別等等。其中,在 Rendering Portlet 中配置站點區域或類別也可以作為選單顯示內容項時的匹配依據。此時使用者需要在建立選單時,在搜尋的匹配條件中包含顯示在 Rendering Portlet 中設定的展現站點區域或類別。
- Portlet 間的連結配置
Rendering Portlet 可以載入在一個或多個 Portal 頁面上,實現不同的 Portlet 例項之間行為互動是非常必要的。例如,使用者希望建立一個包含有兩個 Rendering Portlet 的 Portal 頁面,其中一個 Rendering Portlet 上展現選單以顯示某站點區域下的內容連結,另一個 Rendering Portlet 上展現某個具體的內容項的資料,當你希望點選第一個 Rendering Portlet 上不同的內容連結同時在第二個 Rendering Portlet 上展現相應的內容項資料時,就需要使用 Rendering Portlet 的連結配置來實現這種 Portlet 間的協同工作。該部分的設定包括兩個部分:
- 廣播連結目標,配置是否將當前 Portlet 的上下文廣播給本頁面或者是其他頁面(可以在選擇目標 Portal 頁面列表中選擇);
- 接收連線源,配置是否接收本頁面或是其他頁面廣播的上下文。
通過連結配置還可以實現使用 Local Rendering Portlet 進行內容預覽。要實現這種方式的內容預覽,使用者需要首先建立一個 Portal 頁面,在該頁面上載入 Local Rendering Portlet ;然後需要配置使該 Local Rendering Portlet 使它可以接收來自“其他 Portlet 和此 Portlet ”的連結,同時在 WCM 的編輯 Portlet 的配置頁面中的預覽選項部分允許作者在新建的 Portal 頁面中預覽內容,這樣使用者就可以使用以 Portal 頁面的方式進行內容預覽了。
- 其他
通過配置 Portlet 顯示標題可以更改 Rendering Portlet 的顯示標題,以更友好的方式呈現給使用者,不做配置時會使用預設的 Portlet 名稱。
Remote Rendering Portlet 所需做的額外配置
Remote Rendering Portlet 除了需要作上述的配置以外,還需要設定訪問該 Portlet 時所使用的訪問控制憑證型別等資訊,如圖 6 所示:
圖 6. Remote Rendering Portlet 的特殊配置
- 憑證,用來控制對遠端 Rendering Portlet 的訪問,可以使用當前使用者的憑證,此時使用者對 Remote Rendering Portlet 以及 Portlet 展現的 WCM 內容或元件的訪問許可權取決於自身對它們所具有的許可權,這種情況要選擇LTPA型別;你也可以設定為使用憑證保險庫槽,這時所有使用者訪問 Remote Rendering Portlet 時都是使用這個憑證,即它們對於這個 Remote Rendering Portlet 的訪問許可權都是取決於所使用的憑證保險庫槽,這種情況需要使用者輸入憑證保險庫槽的名稱,WebSphere Portal 的憑證保險庫槽是在 WebSphere Portal 管理頁面中進行建立和管理的。
- Web Content Management 伺服器主機,配置想要展現的遠端伺服器的主機及埠號;
- Web Content Management 上下文路徑,配置 WCM 應用程式的上下文路徑,這是由WAS為 WCM 企業應用程式定義並設定的,預設值為 /wps/wcm ;
- Web Content Management Servlet 路徑,配置 WCM Servlet 路徑,這個值是通過 WCM 的配置檔案 WCMConfigService.properties 中的 connect.defaultservletpath 來設定的,預設值為 /connect ;
- Web Content Management 認證的 Servlet 路徑,配置可靠的 WCM Servlet 路徑,這個值通過 WCM 的配置檔案 WCMConfigService.properties 中的 connect.secureservletpath 來設定,預設值為 /myconnect ;
- Web Content Management 伺服器生成的標準 URL,它確保 WCM 生成的 URL 是標準的,該選項預設設定是選中的。
在實際網站建設應用中,為了保證 Remote Rendering Portlet 和 WCM 伺服器之間資料傳輸的安全性,會對 Remote Rendering Portlet 和 WCM 伺服器之間的通訊使用加密的傳輸,SSL/HTTPS 。在這裡我們對 WebSphere Portal 所使用的 DummyServerKey 和 ServeTrustFile 進行簡要的介紹。
在 WebSphere Portal 安裝完成後,會生成 DummyServerKeyFile.jks 和 DummyServerTrustFile.jks 兩個預設金鑰資料庫檔案。其中 DummyServerKeyFile.jks 用於儲存 Portal 伺服器的個人證照,DummyServerTrustFile.jks 用於儲存受到信任的簽署人證照。本文以這兩個檔案為例,說明在 Remote Rendering Portlet 和 WCM 伺服器之間建立 SSL 連線的方法。應該指出,使用 WebSphere Portal 安裝時產生的金鑰是不安全的,為了提高安全性,您可以為通訊建立自己的私鑰和證照。
使用
/bin 目錄下的 IBM 金鑰管理程式(ikeyman)開啟 WCM 伺服器中的金鑰資料庫檔案 DummyServerKeyFile.jks 。抽取個人證照。並將匯出的證照檔案拷貝到 Rendering 伺服器中; 在 Rendering Portlet 伺服器 中,使用 IBM 金鑰管理程式開啟 DummyServerTrustFile.jks,並使用證照匯入 WCM 伺服器的個人證照檔案。
完成了上述操作之後,就可以在 Remote Rendering Portlet 中設定使用 SSL 的方式和 WCM 伺服器進行通訊了。在 WCM 伺服器主機中填入 https 方式的主機地址,如 https://wcmserver.com 。
以上只是保證了通訊鏈路的安全性,如果使用者需要對客戶端(Rendering Portlet 伺服器)的身份進行認證,還需要重複上述步驟,將 Rendering Portlet 伺服器中儲存於 DummyClientKeyFile.jks 中的個人證照匯入到,位於 WCM 伺服器中的 DummyClientKeyFile.jks 中。
Web 站點發布的內容一般都包括圖片和文字資訊,我們這裡提供了一個例子詳細的說明了如何使用 Rendering Portlet 釋出 WCM 內容。
作為示例,我們使用 WCM 建立了一個新聞站點,站點包含兩個 Rendering Portlet,一個用來展現新聞文章列表,另一個展現當前使用者選擇閱讀的新聞文章內容,如圖 9 所示:
圖 9. 使用 Rendering Portlet 建立新聞站點
首先,需要進入 WebSphere Portal 管理頁面,新建一個 Portal 頁面或者我們可以直接使用 WCM 預設安裝時提供的內容預覽頁面,重新編輯頁面的佈局在頁面上載入兩個 Rendering Portlet(以 Local Rendering Portlet 為例),如圖 10 所示:
圖 10. 新增新聞站點的 Rendering Portlet
這時我們就可以開始配置兩個 Portlet 了,在Rendering Portlet 的配置這一個章節中我們已經瞭解到,這個頁面上的兩個 Rendering Portlet 屬於不同的 portlet 例項,而且 portlet 之間需要協同並表現出不同的行為,所以,在配置 Portlet 時需要採用編輯共享設定模式的配置方式。
在 Portlet 設定之前,我們假設已經事先建立好了選單元件以及新聞內容。對於頁面左面的 Rendering Portlet 我們需要顯示新聞選單,並將該 Portlet 的連結廣播到本頁面;對於右側用於顯示新聞內容的 Portlet,在顯示內容區域我們可以選擇一個預設展現的新聞內容,最重要的是在連結部分允許該 Portlet 能夠接收本身以及其他 Portlet 的連結。具體的 Portlet 的設定如圖 11 所示:
圖 11. 新聞 Rendering Portlet 的設定
上述的操作完成之後,我們在點選左側 Rendering Portlet 上顯示的新聞連結時,在右側的 Rendering Portlet 上就可以展現出相應的新聞內容了。
本章節就對 WebSphere Portal 的優化,Rendering Portlet 部署上的優化和 WCM 內容設計上的優化三個方面進行了講解,詳細的描述了使用 Rendering Portlet 的優化措施以使,WCM 展現環境工作在較好的狀態。
- 安裝效能相關的補丁
WebSphere Portal 的一些補丁是專門為了提高 Rendering Portlet 的效能而釋出的,所以建議對這類補丁在經過測試後予以安裝,如:
PK32541: Allow PrincipalInformations to be cached (for Local Rendering Portlet) PK32544: Allow PrincipalInformations to be cached (for Remote Rendering Portlet)
可以通過訪問 http://www.ibm.com/support 獲得最新的補丁列表
- 對資料庫進行調校
Web 內容儲存在 JCR 資料庫中,對 WebSphere Portal 所使用資料庫的訪問速度,尤其是 JCR 資料庫的訪問速度是影響 WCM 儲存速度的關鍵要素之一。因此需要對資料庫進行調校使資料庫工作在最佳狀態。同時由於 Web 內容會隨著對 WCM 的使用不斷的變化,所以對資料庫調較的工作需要週期性的持續進行。具體的操作需要參照所用資料庫的使用手冊。
- 對 WCM、WebSphere Portal 和 LDAP 進行調校
訪問 Rendering Portlet,需要 WCM 的支援,以及間接的對 WebSphere Portal 和 LDAP 的訪問。所以需要對 WCM、WebSphere Portal 和 LDAP 進行調校。
對 WCM 的調校參見《 Official Web Content Management Tuning Guide 》。
對 WebSphere Portal 的調校參見《 Official Portal Tuning Guide 》。
對 LDAP 的調校參見具體 LDAP 的使用手冊。
- 及時關閉無意義的跟蹤設定
在系統發生故障時需要開啟跟蹤功能,獲取了相關的資訊以進行故障的診斷。但是在獲取了執行資訊後,一定要確保及時的關閉跟蹤設定。因為開啟跟蹤,會佔用大量的處理器時間,產生大量的 I/O 操作,嚴重影響伺服器的效能。
- 在交付伺服器上關閉版本功能
由於在 WCM 安裝完畢後,預設是啟用了版本管理功能的。但通常在交付伺服器中,是不會對 Web 內容進行編輯的,而是通過辛迪加的方式,從編寫伺服器中複製 Web 內容。所以我們可以通過關閉版本功能的方法來加快辛迪加的速度。所以建議在交付伺服器上關閉版本功能。具體步驟如下:
- 使用文字編輯軟體開啟交付伺服器中位於
/wcm/shared/app/config/wcmservices 路徑下的 WCMConfigService.properties 檔案 - 設定:
versioningStrategy.AuthoringTemplate = nerver versioningStrategy.Component = nerver versioningStrategy.Content = nerver versioningStrategy.PresentationTemplate = nerver versioningStrategy.Site = nerver versioningStrategy.Taxonomy = nerver versioningStrategy.Workflow = nerver versioningStrategy.Default = nerver
- 儲存 WCMConfigService.properties 檔案,並退出。
- 重啟交付伺服器。
- 設定:
- 使用文字編輯軟體開啟交付伺服器中位於
- 不要在本地 WCM 伺服器上使用 Remote Rendering Portlet
由於 Remote Rendering Portlet 是通過 HTTP 連線的方式同 WCM 伺服器進行網路通訊獲取 Web 內容的,而 Local Rendering Portlet 是通過直接本地資料訪問獲取 Web 內容的。所以使用 Local Rendering Portlet 訪問本地 WCM 伺服器能有效的減少網路流量。在高負載的環境下尤其重要,嚴重時可能會造成伺服器的掛起。
- 啟用 WCM 會話管理
WCM 預設的為頁面中的每一個 Rendering Portlet 建立一個會話。這樣當大量使用者訪問具有多個 Rendering Portlet 的頁面時,就會造成嚴重的效能問題。當有這種情況發生時,我們需要啟動 WCM 會話管理服務,對會話進行管理,以保證當前對每個使用者只有一個活動的會話。具體步驟可參考 WebSphere Portal 的資訊中心,啟用會話處理的章節。
- 開啟伺服器的快取功能
在使用 Rendering Portlet 進行呈現的環境中,應該使用 WCM 高階快取,來加速 WCM 內容的呈現。具體參見 WebSphere Portal 的資訊中心中 Web 內容快取記憶體配置一節。
同時可以使用 Servlet 快取來加速非個性化內容的展現,開啟 Servlet 快取的具體步驟如下:
- 確保 Dynacache 在 Web Application Server 中處於開啟的狀態。參見WebSphere Application Server 的資訊中心中配置 Servlet 快取記憶體一節;
- 定義 cachespec.xml 檔案,用來指定被快取的內容。參見 WebSphere Application Server 的資訊中心中 cachespec.xml 檔案一節;
- 備份 Rendering Portlet
在
\installableApps 路徑下對 ilwwcm-localrendering-portlet.war 和(或)ilwwcm-remoterendering-portlet.war 檔案進行備份; - 生成 Rendering Portlet 新的 war 包
將 cachespec.xml 檔案分別加入 ilwwcm-localrendering-portlet.war 和(或)ilwwcm-remoterendering-portlet.war 檔案中;
- 在 WebSphere Portal 用新生成的 war 包,更新 Rendering Portlet ;
- [ 可選 ] 安裝 Dynamic Cache Monitor. 參見 WebSphere Application Server 的資訊中心中顯示快取記憶體資訊一節。
- 使用 Remote Rendering Portlet 時 WCM 主機的設定
使用 Remote Rendering Portlet 時,可以選用 LTPA 和憑證保險庫槽兩種憑證方式用於向 WCM 伺服器進行認證。當使用 LTPA 方式時,在設定 WCM 主機時一定要使用域名,這是因為 LTPA 工作時使用主機域名的方式進行工作,如果設定成 IP 地址時,將導致工作不正常;當使用憑證保險庫槽的方式時,推薦使用 IP 地址作為輸入。這樣會減少確認主機的時間,提高 Rendering Portlet 的響應速度。
- 升級優化
由於 Remote Rendering Portlet 可以部署在低版本的 WebSphere Portal 上。這樣,可以在 WebSphere Portal 交付伺服器全面升級之前,升級後臺的 WCM 伺服器,儘快的使用 WCM 新版本帶來的優勢。
- 在使用 Remote Rendering Portlet 預覽時使用 URL 對映
在 WCM 的預覽選項中可以設定使用在 Remote Rendering Portlet 進行遠端預覽。建議使用 URL 對映機制對載入了 Remote Redering Portlet 的 Portal 頁面,進行 URL 對映。雖然在通常情況下可以使用 Remote Rendering Portlet 的 WebSphere Portal URL 進行設定,但是這是不被保證的,而且不是使用者友好的。所以為了提供固定的,使用者友好的 URL 應該使用對映的 URL 的方式。具體方法參見 WebSphere Portal 的資訊中心中 URL 映設一節
以上一些對 WCM 部署時的優化措施,有些會在升級 WebSphere Portal 補丁的時候被覆蓋掉。所以在每次升級後,需要對配置進行適當的檢查。
- 對內容和內容元件元件進行適當的授權
適當的使用授權機制,來控制使用者對 WCM 內容的訪問許可權,可以提高呈現的效率。同時不要使用概要檔案來代替許可權控制,因為這是不安全的和低效的。
如果在 Web 內容展現的實際應用中,確實不需要個性化和許可權管理,同時又希望使用 WebSphere Portal 提供的基礎設施,可以考慮使用“預呈現 +Web Page Portlet ”的方式。即使用 WCM 中 Pre-Rendering 功能將站點預呈現為靜態 HTML 站點,然後通過在 WebSphere Portal 中使用 Web Page Portlet 匯入預呈現的 Web 內容來實現。
- 對快取的考慮
儘量不要將可快取的內容和不可快取的內容放置在同一頁面,以提高快取的效率。同時不要對個性化內容進行快取
- 儘量使用概要檔案代替個性化規則
由於在 WCM 中使用個性化規則,需要較大的代價。所以在進行個性化的設計時,首先應該考慮使用 WCM 中的概要檔案功能(關鍵詞 , 類別),來代替個性化規則。
- 設計自包含的展現單元
在使用 WCM 的設計中。不是所有的設計內容和元件都適用於在 Rendering Portlet 呈現。使用 Rendering Portlet 進行呈現,在設計中儘量保持內容或元件是獨立的,不依賴於其它的內容或元件。即要求在設計演示模板時,僅僅引用需要現實的內容。而其它諸如選單元件,導航器元件等部分放置在其它 Rendering Portlet 中,通過連結廣播的方式進行展現。
- JSP 檔案路徑
JSP 元件使用的 JSP 檔案,當使用 Local Rendering Portlet 進行呈現時,需要放置在 LRP 的 WAR 路徑下
/installedApps/WCM_Local_ng_Portlet-name.ear/name.war 使用 RRP 進行呈現時,需要將其放置在 WCM 的 WAR 路徑下
/installedApps/node-name/wcm.ear/ilwwcm.war - 類別選擇樹無法應用於 Local Rendering Portlet
類別選擇樹由分類元件進行顯示,它可以使使用者能夠選擇要在個性化選單中顯示的類別,實現使用者的個性化設定。在 Local Rendering Portlet 中可以顯示登陸使用者已選擇和未選擇顯示的類別,但是由於使用者在更新選擇類別時請求的頁面與載入 Local Rendering Portlet 的標準 Portal 頁面不同,所以登陸使用者在 Local Rendering Portlet 上無法實現使用者選擇類別的更新。
- 顯示路徑資訊
在 WCM 中使用 pathcmpnt 標籤來顯示當前項的路徑資訊。由於在 Rendering Portlet 中和在 Servlet 中處理的方法不同,當使用 pathcmpnt 標籤時,需要使用 Type="noprefixbase" 來代替標準引數 Type="base",使用 Type="noprefixservlet" 來代替標準引數 Type="servlet" 。
- 關於接收連結源
使用 Rendering Portlet 進行預覽時,需要配置 Rendering Portlet 的接收連結源為“其它 Portlet 和此 Portlet ”,這樣 Rendering Portlet 才能接收到來自預覽的內容。
使用頁面導航等元件時,由於會產生 WCM 和 Rendering Portlet 之間的通訊,同樣需要將 Rendering Portlet 的接收連結源配置為“其它 Portlet 和此 Portlet ”。
- 使用預呈現展現方式時的限制
當預呈現作為預設的內容展現方式時,將不能使用 Local Rendering Portlet 進行呈現
- 生產環境下使用 Remote Rendering Portlet
在生產環境下為了保護伺服器的安全,通常在使用 Remote Rendering Portlet 時會將 WCM 伺服器放置在防火牆之後,如圖 12 。但是終端使用者訪問時,Remote Rendering Portlet 不會為使用者代理去訪問影像及其它資源,而是預設直接返回資源的直接地址,有瀏覽器進行直接訪問。這就會造成在使用 Remote Rendering Portlet 時,由於資源處於防火牆後,會造成客戶端無效連結的問題。具體解決方法如下:
- 在配置 Remote Rendering Portlet 時,不要選中“ Web Content Management 伺服器生成的標準 URL ”
- 編輯 Web 伺服器所使用的 plugin-cfg.xml 檔案,使“ wps/wcm/myconnect/* ”定向到位於防火牆後的 WCM 伺服器。
圖 12. 防火牆環境下使用 Rendering Portlet
使用 Rendering Portlet 訪問叢集環境下的 WCM 伺服器
當使用 Remote Rendering Portlet 時,將 WebSphere Portal 伺服器和 WCM 伺服器在一個叢集中時,Remote Rendering Portlet 可能會工作不正常。這是由於 WebSphere Portal 伺服器和 WCM 伺服器使用了同一個主機名。因為預設情況下 WAS 使用名為 JSESSIONID 的 cookie 來儲存會話資訊。因此當 WebSphere Portal 伺服器和 WCM 伺服器使用同一個主機名,cookie 會被相互覆蓋,產生一系列問題。
下面有四種解決方式:
- 使用 Local Rendering Portlet 的方式代替 Remote Rendering Portlet,因為在叢集的環境下 Local Rendering Portlet 可以訪問不同伺服器上的內容。
- 使用 WCM 伺服器的 IP 的地址來配置 Remote Rendering Portlet 。
- 分配兩個主機名,使 WebSphere Portal 伺服器和 WCM 伺服器使用不同的主機名
- 為 WebSphere Portal 伺服器和 WCM 伺服器配置不同的 cookie 名稱。具體操作見 WebSphere Application Server 資訊中心 Cookie 設定一節 .
本文對 WCM 中 Rendering Portlet 的呈現方式進行了介紹。希望本文能對您有所幫助。使用本文講解的內容,您可以正確的配置和使用 Rendering Portlet 的呈現方式,並掌握對 Rendering Portlet 的優化技能。
- JSP 檔案路徑
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-586495/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Angular開發實踐(八): 使用ng-content進行元件內容投射Angular元件
- WEB應用內容安全策略(Content Security Policy)Web
- 使用Collections對list的內容進行排序排序
- 什麼是 CMS - Content Management System
- 在 PBootCMS 中,呼叫公司簡介等單頁內容可以透過 {pboot:content} 模板標籤來實現boot
- 如何使用Web3.js API 在頁面中進行轉賬WebJSAPI
- 內容定址在 Web3 的應用Web
- 內容分發網路(Content Delivery Network,CDN)
- 【Azure 儲存服務】使用 AppendBlobClient 物件實現對Blob進行追加內容操作APPclient物件
- 斷言無法獲取 content 內容;執行後不生成報告
- head頭—內容安全策略(Content Security Policy, CSP)
- 推薦召回--基於內容的召回:Content Based
- web前端內容1Web前端
- FreeWheel報告:在多螢幕世界中發現內容
- 如何使用遊戲引擎進行實時渲染和內容建立遊戲引擎
- PbootCMS對內容列表進行篩選boot
- 在JavaFX程式中嵌入Swing內容Java
- 在Linux中,如何使用grep命令查詢檔案中的內容?Linux
- 從 SAP 幫助文件的頁面,談談 SAP Content Management 的實現
- 使用go在mongodb中進行CRUD操作MongoDB
- 在.Net Web Api中使用FluentValidate進行引數驗證WebAPI
- python中修改檔案行內容Python
- Web 安全之混合內容Web
- 內容、表現和行為分離
- 在echarts中自定義提示框內容Echarts
- 使用 ngrok 進行內網穿透內網穿透
- Nginx R31 doc-09-Serving Static Content 靜態內容Nginx
- dotnet 預設建立的 JsonContent 沒有 Content Lenght 的內容頭JSON
- 透過Requests模組獲取網頁內容並使用BeautifulSoup進行解析網頁
- 當AI遇上展會——全息世界的又一“現在進行時”AI
- Django中content_type的使用Django
- 在Linux行內直接進行大小寫轉換Linux
- 利用post請求傳送內容進行爬蟲爬蟲
- python爬蟲之快速對js內容進行破解Python爬蟲JS
- 在excel中某些單元格內批量增加相同的內容Excel
- 在報表中可以如何使用 ECharts 做圖形展現?Echarts
- 進階|教你使用自定義屬性功能管理 Word 文件中的待定內容
- 文章錯別字檢測,提升你的內容質量,幫你進行內容分發
- 使用LVM對系統盤進行擴容LVM