簡介GridSphere 門戶框架 在上一年
基於 Portlet 的門戶已成為門戶服務器平台的最令人興奮的領域之一
Java Specification Request (JSR)
(即 portlet API)的出現將允許門戶供應商提供公共編程模型
該模型允許開發人員更快地將新功能插入到門戶服務器中
消費者可以輕松地使用這些功能
現在
許多門戶供應商支持 portlet
包括 IBM WebSphere
Sun One Portal Server
Oracle
iAS 和 Jakarta Jetspeed 項目
GridSphere 門戶 提供一個基於 portlet 的高級開放源代碼門戶
GridSphere 是在歐盟提供基金的 GridLab 項目 下開發的
提供了一個非常復雜的門戶
該門戶為各種終端用戶提供高度定制的環境
portlet 模型向用戶提供了一個靈活易用的接口
並向門戶開發人員提供了一個模型
用於創建可插入的和動態的應用程序支持
下面簡要列出核心的 GridSphere 特性
Portlet API 的實現與 IBM WebSphere Portal Server
或更高版本緊密兼容
易於開發並易於與插入到 GridSphere portlet 容器中的
第三方 portlet
集成
級別更高的模型
用於使用可視的 bean 和 GridSphere User Interface (UI) 標簽庫構建復雜的 portlet
靈活的基於 XML 的門戶表示描述
可以輕松對其進行修改來創建自定義的門戶布局
對基於角色的訪問控制(Role Based Access Control
RBAC)提供內置的支持
RBAC 將用戶分為 guest
user
admin 和 super user
復雜的服務模型
允許創建
用戶服務
可以按照用戶權限限制服務方法
通過 Hibernate for RDBMS 數據庫支持提供數據的持久性
為 portlet 服務的服務端測試集成了 Junit/Cactus 單位測試
包括生成測試報告
GridSphere 核心 portlet 提供基本功能
包括登錄
注銷
用戶和訪問控制管理
由於 GridSphere portlet API 幾乎與 WebSphere portlet API 完全相同
所以您應該多看看 developerWorks 文章
這些文章在 參考資料 和 IBM WebSphere Portal Zone 中列出
在理論上
使用 IBM WebSphere Portal Server 開發本文中的示例 portlet 應該不難
GridSphere API 與 JSR Portlet API
最後的規范非常類似
gridSphere 的將來版本是符合 JSR
的
GridSphere 項目 GridSphere Web 站點提供關於開發 portlet 的附加文檔
有關使用 GridSphere 的信息和其他資源的集合
要獲得這些信息
請加入 GridSphere 郵件列表中
當前的 GridSphere 版本提供了一個門戶
一個 portlet 容器和一組有用的核心 portlet
包括用戶和組管理以及布局定制和 portlet 訂閱
安裝 GridSphere 從 下載最新的 GridSphere 版本並按照指示安裝該門戶
前提條件是您必須在系統中安裝了 Java 技術 Ant 和 Tomcat
X servlet 容器
安裝了 GridSphere 後
可以只啟動 Tomcat
然後在 Web 浏覽器中
單擊 查看該門戶
初始配置允許您以
root
身份登錄
而且不用輸入口令
登錄後
轉至 Administration
>Users 選項卡
單擊 root 用戶來編輯配置文件
更改口令和其他設置
包括您的登錄名和電子郵件地址
登錄後
您就成為 GridSphere 門戶管理員
圖
GridSphere 用戶管理器 portlet
educitycn/img_///jpg> 網格服務簡介 在提供對用戶的虛擬組織(Virtual Organization
VO)內的計算資源和數據資源的安全統一訪問方面
門戶正變得越來越復雜
所以網格 portlet 必須依靠某種類型的中間件來執行這些操作
開放網格服務基礎設施(Open Grid Services Infrastructure
OGSI)規定如何創建網格服務
而 OGSI 是整體開放網格服務體系結構(Open Grid Services Architecture
OGSA)的一部分
Globus Toolkit
(GT
) 提供了 OGSI 的 Java 參考實現
GT
提供了強制性網格服務特性
如服務調用
生存期管理
服務數據接口
依賴底層公鑰基礎設施(Public Key Infrastructure
PKI)的安全接口
網格服務擴展了 Web 服務
因此在實際中
編程模型很相似
簡而言之
使用 GT
創建網格服務的步驟如下所示
創建定義服務接口的 WSDL 接口
可以采用工具轉換采用 Java 或 C 語言編寫現有接口以生成 WSDL
使用 GT
工具從 WSDL 服務器接口生成客戶機和服務器存根(stub)
填寫服務器骨架(skeleton)實現代碼
配置服務部署描述符並部署服務到宿主容器
幸運的是
GT
與一組供我們使用的示例服務綁定在一起
因此
我們將集中討論使用現有服務和現有的客戶機存根代碼來訪問服務
幸運的是
您下載的 Tomcat 服務器還可以充當 OGSI 網格服務宿主環境
允許 GridSphere 門戶框架和 OGSA GT
示例服務一起運行
下一節准備開發示例 portlet
您應從 Globus Web site 下載最新的 GT
版本
要構建示例並部署到 Tomcat 容器中
請發出下列命令
其中 $CATALINA_HOME 設置為下載 Tomcat 的位置
%> ant
%> ant samples
%> ant
Dtomcat
dir=$CATALINA_HOME deployTomcat
現在
由於示例 portlet 需要一些 GT
類
所以需要將 OGSA Web 應用程序的庫復制到 portlet 可以找到的 Tomcat 共享庫目錄
%> cp $CATALINA_HOME/webapps/ogsa/WEB
INF/lib/*
jar $CATALINA_HOME/shared/lib/
根據 GT
User
s Guide(請參閱
參考資料
)
最後一步是將下列條目添加到 $CATALINA_HOME/conf/web
xml 中
配置 Tomcat 以接受 WSDL
GWSDL 和 XSD 文件擴展名
<mime
mapping>
<extension>gwsdl</extension>
<mime
type>text/xml</mime
type>
</mime
mapping>
<mime
mapping>
<extension>wsdl</extension>
<mime
type>text/xml</mime
type>
</mime
mapping>
<mime
mapping>
<extension>xsd</extension>
<mime
type>text/xml</mime
type>
</mime
mapping>
編寫網格計數器服務 portlet 在網格 portlet 示例中
我們使用 Globus Toolkit 提供的示例 OGSI 計數器服務編寫一個簡單的加減數字的 portlet
計數器服務表示為 CounterPortType
它是基 GridService 接口的子類
有三個方法
如下面的圖
所示
圖
計數器服務的 UML 圖
educitycn/img_///jpg> add(int a) 和 subtract(int b) 方法添加或減去提供的值並返回新值
getValue() 方法只返回靜態計數器值的當前結果
編寫 portlet
在計數器 portlet 示例中
用戶可以輸入整數值
然後單擊
Add
或
Subtract
按鈕加上或減去計數器服務的值
並顯示已更新的計數器值
當第一次實例化 portlet 時
init() 方法被調用
向該 portlet 提供由任何後續 portlet 請求使用的所有必需的初始信息或配置信息
portlet 編程模型將表示(portlet 的呈現)和邏輯(當某個動作發生時必須執行的操作)分為不同的 portlet 方法
portlet 容器負責調用 doView() 呈現方法來顯示 portlet
並在 portlet 收到事件(如按鈕單擊或表單提交)時
負責調用 actionPerformed() 方法
Portlet 可以向用戶提供幾種模式
包括 Edit
Configure 或 Help
從而向用戶提供特定模式的接口
portlet 必須提供適當的呈現方法
如 doEdit 用於支持編輯模式
對於熟悉 servlet 的人員而言
portlet 開發非常相似
只是 servlet 的 doGet 或 doPost() 方法由 actionPerformed() 和 doXXX() portlet 方法取代
portlet 編程和 servlet 編程的另一個顯著差別在於 PortletResponse
PortletConfig 和 PortletContext 類的使用
這些類在現有的由 Java Servlet API 提供的 HttpServletRequest
HttpServletResponse
ServletConfig 和 ServletContext 類的基礎上裝飾(也就是提供)了附加的功能
最終的 portlet 如下所示
清單
計數器服務 portlet
public class GridCounterPortlet extends AbstractPortlet {
public static final String VIEW_JSP =
/jsp/ogsa/counter/view_counter
jsp
;
// Create a URL for the counter service
private static final String counterUrl =
FactoryService
;
private LocatorType locator = null;
private CounterPortType counter = null;
public void init(PortletConfig config) throws UnavailableException {
super
init(config);
try {
// Create a grid service handle from the service URL
URL GSH = new URL(counterUrl);
// Get a reference to the CounterService Factory
OGSIServiceGridLocator gridLocator = new OGSIServiceGridLocator();
Factory factory = gridLocator
getFactoryPort(GSH);
GridServiceFactory counterFactory = new GridServiceFactory(factory);
// Create a new CounterService instance and get a refe
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19127.html