Portal包括:
(1) Portal Server。『Portal Server是基于WEB的應用程序, 它將不同資源進行整合并展現給用戶。有些文章直接把Portal Server叫做Portal,請注意。』
(2) Portlet Container。『Portlet Container用來管理Portlet的生命周期并且提供其運行所需要的必要環境. 并且為Portlet Preferences提供持久性(Persistent)存取服務.但是其不支持內容的Aggregation. Aggregation由Portal組件提供.』
(3) Portlet。『Portlet 是以
Java
技術為技術的 web 組件,可以被容器管理,可以產生動態內容。處理請求并動態返回頁面, 可以做為Portal 的可拔插的用戶界面組件.』
我們需要Portal的目的就是要做到系統功能與模塊的可配置。同時要開源并符合標準。能與其他的系統進行結合比如Struts。
目前比較主流的Portal產品:
Apache Jetspeed(http://jakarta.apache.org/jetspeed/)
Liferay(http://www.liferay.com)
EXOportal(http://cvs.sf.net/viewcvs.py/exo/ExoPortal/)
Pluto(http://jakarta.apache.org/pluto)
BEA WebLogic Portal (http://edocs.bea.com/wlp/docs81/javadoc/com/bea/portal/model/Portlet.html )
IBM Websphere Portal (http://www.software.ibm.com/wsdd/zones/portal/ )
Oracle Portal Developer Kit (http://portalstudio.oracle.com/)
jfoxportal(http://www.huihoo.org/jfox/jfoxportal/index.html 剛提出草案,不過是國內的。)
說Portal,就不能不提JSR#168 Portlet。
JSR 是由 JCP (
http://www.jcp.org/
) 這個
Java
組織所定義出來的規范。JSR#168規范就是一個關于Portlet的規范 ——Portlet Spec 1.0 。既然有了規范,理所當然的之后的產品就應該按照這個規范來制作。
JSR168的目標是:
定義portlet的運行時環境,即portlet容器
定義portlet和portlet容器之間的api集
提供portlet存儲易失數據和持久數據的機制
提供portlet包含servlet和jsp的機制
定義方便部署的portlet打包方法
提供jsr168規范下的portal的二進制portlet便攜性
通過WSRP(web service for remote portlet)協議運行符合jsr168規范的遠程portlet
IT
界已經廣泛的接受了jsr168規范。所有的portal領域主要公司都是jsr168專家組的成員:Apache,AGT,BEA,Boeing,Borland,Broadvision,Citrix,EDS, Fujitsu, Hitachi, IBM, Novell, Oracle, SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO, and Vignette。官方支持列表甚至更長。
客戶端請求由
Portal Web
應用程序進行處理,它為當前用戶檢索當前頁上的
Portlet
。然后,
Portal Web
應用程序為每個
Portlet
調用
Portlet
容器來通過
Container Invoker API
檢索它的內容。
Portlet
容器通過
Portlet API
調用
Portlet
。
Container Provider Service Provider Interface
(
SPI
)允許
portlet
容器通過
Portal
檢索信息。
Portlet
窗口包括:
l
標題欄,帶有
Portlet
的標題
l
修飾,包括用于更改
Portlet
的窗口狀態的按鈕(比如最大化或最小化
Portlet
)和用于更改
Portlet
的模式的按鈕(比如顯示幫助或編輯預定義的
Portlet
設置)
l
由
Portlet
產生的內容(也稱為一個標記段)。
下面是典型的事件流程,當用戶訪問
portal
頁面的時候:
<!--[if !supportLists]-->² <!--[endif]-->客戶端在驗證后向portal發http請求。
<!--[if !supportLists]-->² <!--[endif]-->portal接收請求。
<!--[if !supportLists]-->² <!--[endif]-->portal判斷是否有包含請求,并請求包含的動作指向的portlet是和這個portal頁面相關聯的。
<!--[if !supportLists]-->² <!--[endif]-->如果含有動作的目標portlet,portal發請求給portlet容器去執行相應的portlet的動作。
<!--[if !supportLists]-->² <!--[endif]-->portal通過portlet容器調用portlets,去獲得內容片斷,這個片斷可以包含在portal頁面中。
<!--[if !supportLists]-->² <!--[endif]-->portal集合portlets的輸出內容到1個portal頁面中,并把頁面返回客戶端。
Portlet
產生標記片斷。
Portal
通常給
portlet
產生的標記片斷加了標題,控制按鈕和其他的裝飾,這個新的片斷叫
portlet
窗口。然后
portal
整合
portlet
窗口到完整的文件,
portal
頁面。
<!--[if !vml]-->
<!--[endif]-->
Portlets
運行在
portlet
容器內。
Portlet
容器接收
portlets
產生的內容。典型的,
portlet
容器把
portlet
內容傳到
portal
。
Portal server
根據
portlet
產生的內容創建
portal
頁面,并傳送給客戶端,由客戶端顯示。
lt;!--[if !vml]-->
<!--[endif]-->
客戶使用客戶終端訪問
portal
。在收到請求后,
portal
判斷滿足請求的
portlets
列表。
Portal
通過
portlet
容器,調用
portlets
。
Portal
用
portlet
產生的片斷創建
portal
頁面,同時把頁面返回給用戶。
<!--[if !vml]-->
<!--[endif]-->
用戶可以根據需要通過增刪
Portlet
的方式配置他們的頁面。在
Windows
或者
XWindows
窗口程序中,窗口有最大化和最小化的窗口狀態,
portlet
也有窗口狀態。
窗口狀態是
portal
頁面空間數量的指示器,它被賦值給
portlet
產生的內容中。當調用
portlet
,容器提供當前窗口狀態給
portlet
。
Portlet
使用窗口狀態決定多少信息需要
render
。
Portlets
能在處理
action
請求時,編程的改變他們的窗口狀態。
Portlet
規范定義了
3
種窗口狀態,
normal
,
maximized
和
minimized
。
Normal
窗口狀態
Normal
窗口狀態表示
portlet
要和其他的
portlet
共享頁面。它也表示目標設備限制了顯示能力。因此,
portlet
限制輸出的尺寸。
MAXIMIZED
窗口狀態
Maximized
窗口狀態表示
portlet
是
portal
頁面唯一的
portlet
,或
portlet
相比與其他的
portlet
有更多的空間。當窗口狀態是
Maximized
時,
portlet
產生更多的內容。
Minimized
窗口狀態
當
portlet
是
minimized
狀態,它將是最小限度的輸出,或不輸出。
Portlet
模式指出
porlet
的功能。一般來說,
portlet
執行不同任務,依靠當前執行的任務的創建不同內容。
Portlet
模式告訴
portlet
他們執行什么任務,生產什么內容。當調用
portlet
,容器提供當前
portlet
模式給
portlet
。
Portlets
在處理
action
請求時能編程的改變他們的
portlet
模式。
Portlet
有四種模式:
view
,
edit, help
和
config
。
可用的模式根據用戶的角色受到限制。例如,匿名用戶只能使用
view
和
help
模式,而驗證用戶可以使用
edit
模式。
舉例來說,一個用戶可以定制的股票信息Portlet,View模式允許用戶查看股票列表,Help模式提供給用戶幫助手冊,Edit模式允許用戶定制自己關注的股票列表,而Config模式允許管理員改變股票服務的一些配置。
VIEW
模式
View
模式期待的功能是產生標記反映當前的狀態給portlet。例如,view模式的portlet包含1個或多個框,用戶可以操作或交互,或組成不需要任何用戶交互的的靜態內容。
Portlet
開發者需要通過覆蓋doView方法實現view portlet模式的功能。
EDIT
模式
通過edit模式,portlet提供內容和logic讓用戶用戶化portlet的行為。Edit模式包含一個或多個框,用戶可以定位并輸入他們的用戶化數據。
典型的,edit模式,將設置或修改portlet的參數。Portlet開發者需要通過覆蓋doEdit方法實現edit portlet模式的功能。
HELP
模式
當在help模式,portlet提供portlet的help信息。這個help信息將會是簡單的框,用連貫的正文或上下文敏感的幫助闡明了整個portlet。Portlet開發者需要通過覆蓋doHelp方法實現help portlet模式的功能
CONFIG
模式
當在config模式,管理員可以進行相應的操作。
Portlet開發者需要通過覆蓋doConfig方法實現view portlet模式的功能。
因為Portlet繼承于Servlet,所以portlet可以打包成war文件發布到Portal容器中。管理員可以發布或者卸載portlet。在一個Portlet Web 應用中,一個portlet描述文件用來描述portlet的屬性和初始化信息。一個Portlet定義包含一個application portlet和多個concrete portlet。一個Application Portlet在portlet容器中僅存在一個實例。一個concrete Portlet實例一個使用額外的數據實例化的portlet。
posted on 2007-01-23 09:42
周銳 閱讀(582)
評論(0) 編輯 收藏 所屬分類:
Portal