分享
 
 
 

用导航组件来构建动态Portal菜单

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

简介:GridSphere 门户框架

在上一年,基于 Portlet 的门户已成为门户服务器平台的最令人兴奋的领域之一。Java Specification Request (JSR)168(即 portlet API)的出现将允许门户供应商提供公共编程模型,该模型允许开发人员更快地将新功能插入到门户服务器中,消费者可以轻松地使用这些功能。现在,许多门户供应商支持 portlet,包括 IBM WebSphere、Sun One Portal Server、Oracle 9iAS 和 Jakarta Jetspeed 项目。

GridSphere 门户 提供一个基于 portlet 的高级开放源代码门户。GridSphere 是在欧盟提供基金的 GridLab 项目 下开发的,提供了一个非常复杂的门户,该门户为各种终端用户提供高度定制的环境。portlet 模型向用户提供了一个灵活易用的接口,并向门户开发人员提供了一个模型,用于创建可插入的和动态的应用程序支持。下面简要列出核心的 GridSphere 特性:

Portlet API 的实现与 IBM WebSphere Portal Server 4.2 或更高版本紧密兼容。

易于开发并易于与插入到 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 1.0 最后的规范非常类似,gridSphere 的将来版本是符合 JSR 168 的。

GridSphere 项目

GridSphere Web 站点提供关于开发 portlet 的附加文档、有关使用 GridSphere 的信息和其他资源的集合。要获得这些信息,请加入 GridSphere 邮件列表中。

当前的 GridSphere 版本提供了一个门户、一个 portlet 容器和一组有用的核心 portlet,包括用户和组管理以及布局定制和 portlet 订阅。

安装 GridSphere

从 http://www.gridsphere.org 下载最新的 GridSphere 版本并按照指示安装该门户。前提条件是您必须在系统中安装了 Java 技术 Ant 和 Tomcat 4.1.X servlet 容器。安装了 GridSphere 后,可以只启动 Tomcat,然后在 Web 浏览器中,单击 http://127.0.0.1:8080/gridsphere/gridsphere 查看该门户。初始配置允许您以“root”身份登录,而且不用输入口令。登录后,转至 Administration-Users 选项卡,单击 root 用户来编辑配置文件。更改口令和其他设置,包括您的登录名和电子邮件地址。登录后,您就成为 GridSphere 门户管理员。

图 1. GridSphere 用户管理器 portlet

网格服务简介

在提供对用户的虚拟组织(Virtual Organization,VO)内的计算资源和数据资源的安全统一访问方面,门户正变得越来越复杂,所以网格 portlet 必须依靠某种类型的中间件来执行这些操作。开放网格服务基础设施(Open Grid Services Infrastructure,OGSI)规定如何创建网格服务,而 OGSI 是整体开放网格服务体系结构(Open Grid Services Architecture,OGSA)的一部分。Globus Toolkit 3.0 (GT3) 提供了 OGSI 的 Java 参考实现。GT3 提供了强制性网格服务特性,如服务调用、生存期管理、服务数据接口、依赖底层公钥基础设施(Public Key Infrastructure,PKI)的安全接口。网格服务扩展了 Web 服务,因此在实际中,编程模型很相似。

简而言之,使用 GT3 创建网格服务的步骤如下所示:

创建定义服务接口的 WSDL 接口。可以采用工具转换采用 Java 或 C 语言编写现有接口以生成 WSDL。

使用 GT3 工具从 WSDL 服务器接口生成客户机和服务器存根(stub)。

填写服务器骨架(skeleton)实现代码。

配置服务部署描述符并部署服务到宿主容器。

幸运的是,GT3 与一组供我们使用的示例服务绑定在一起。因此,我们将集中讨论使用现有服务和现有的客户机存根代码来访问服务。 幸运的是,您下载的 Tomcat 服务器还可以充当 OGSI 网格服务宿主环境,允许 GridSphere 门户框架和 OGSA GT3 示例服务一起运行。

下一节准备开发示例 portlet,您应从 Globus Web site 下载最新的 GT3 版本。要构建示例并部署到 Tomcat 容器中,请发出下列命令,其中 $CATALINA_HOME 设置为下载 Tomcat 的位置。

% ant

% ant samples

% ant -Dtomcat.dir=$CATALINA_HOME deployTomcat

现在,由于示例 portlet 需要一些 GT3 类,所以需要将 OGSA Web 应用程序的库复制到 portlet 可以找到的 Tomcat 共享库目录。

% cp $CATALINA_HOME/webapps/ogsa/WEB-INF/lib/*.jar $CATALINA_HOME/shared/lib/

根据 GT3 User's Guide(请参阅“参考资料”),最后一步是将下列条目添加到 $CATALINA_HOME/conf/web.xml 中,配置 Tomcat 以接受 WSDL、GWSDL 和 XSD 文件扩展名:

<mime-mapping

<extensiongwsdl</extension

<mime-typetext/xml</mime-type

</mime-mapping

<mime-mapping

<extensionwsdl</extension

<mime-typetext/xml</mime-type

</mime-mapping

<mime-mapping

<extensionxsd</extension

<mime-typetext/xml</mime-type

</mime-mapping

编写网格计数器服务 portlet

在网格 portlet 示例中,我们使用 Globus Toolkit 提供的示例 OGSI 计数器服务编写一个简单的加减数字的 portlet。计数器服务表示为 CounterPortType,它是基 GridService 接口的子类,有三个方法,如下面的图 2 所示:

图 2. 计数器服务的 UML 图

add(int a) 和 subtract(int b) 方法添加或减去提供的值并返回新值。getValue() 方法只返回静态计数器值的当前结果。

1. 编写 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 如下所示:

清单 1. 计数器服务 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 =

"http://127.0.0.1:8080/ogsa/services/samples/counter/basic/CounterFactoryService";

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有