跳到导航
BEA Dev2Dev Oracle and BEA
首页 资源中心 dev2dev学堂 在线技术论坛 User Group CodeShare
dev2dev 首页 > 资源中心 > 技术文章
在WebLogic Platform上开发服务信息门户(SIP)

时间:2005-11-03
作者:Eric Peterson
浏览次数:
本文关键字:WebLogic SIP Portal 门户 Portlet 迁移
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

  门户可以用于多种用途,包括交付用于IT管理的信息。Hewlett-Packard的工程师团队已经开发出一个基于门户的J2EE应用程序,Service Information Portal(服务信息门户,SIP),它结合了HP OpenView的各种管理产品和HP的IT管理软件,为多个用户组提供单一的门户视图。

  该产品最初是在Java Portlet标准(JSR-168)发布之前开发出来的,它提供自己的门户服务器和框架。尽管团队成功地整合了来自各个管理系统的数据,但是门户的布局和导航却不够灵活。当门户尝试整合来自外部源的数据时,也受到了限制。

  随着Java社区采用了JSR 168标准,SIP团队清楚地看到了退出门户服务器市场的好处。SIP产品是在单个的访问点而不是在底层的专有门户框架中提供客户所需的内容。SIP的许多客户已经构建了自己的企业信息门户(EIP)。门户的一个重要价值在于,它能够将来自各个位置的数据片断合并到一个位置,所以同时拥有EIP和SIP就是客户的问题了。

  门户服务器市场中的这种发展为SIP团队提供了许多参考门户服务器方面的选择。该团队还有其他需求,这些需求对于许多门户项目来说是非典型的。他们必须在新的门户服务器中提供以前版本的服务器中可用的功能。这类功能包括授权、门户布局和视图设计,以及数据过滤的配置和应用。该产品已经存在了几年,现已发展到3.2版本;开辟迁移路径也很重要。

  本文描述了3.2版本的SIP,以及转为使用BEA WebLogic Portal Server的JSR-168应用程序所需的更改。

SIP 3门户架构概述

  SIP的模块在概念上十分类似于Java Portlet。模块基于Servlet技术实现,但是SIP模块的配置和Java Portlet有着很大的差别。在SIP 3中,单个模块(servlet实例)可以使用很多不同的配置,而且没有特定于用户的设置(portlet首选项)这个概念。SIP包含大量的模块配置,而不是像Java Portlet那样提供许多特定于用户的首选项。对于某些情况,几千个模块配置也没有什么。清单1 显示了SIP 3视图文件的部分内容,其作用是显示两个列,其中各自包含一个模块。

...
<Sheet id=”sheet1” title=”General”>
<Column width=”narrow”>
<ModuleInstance classid=
”com.hp.ov.portal.modules.bookmarks” display=”yes” help=
”/OvSipDocs/C/help/SIP/bookmkView.html” id=”module7” rollupState=”
down” title=”Bookmarks”> <Bookmarks> <SharedGroup name=”hpsipintegrations”/> <Entry href=”http://www.hp.com”
target=”bookmarkwin” title=”HP Primary Site”/> <Entry href=”http://www.openview.hp.com” target=”bookmarkwin” title=”HP OpenView Site”/> <SharedGroup name=”hplist”/> <SharedGroup name=”hpsipintegrations”/> </Bookmarks> </ModuleInstance> </Column> <Column width=”wide”> <ModuleInstance classid=”
com.hp.ov.portal.modules.messageboard” display=”yes” help=”/OvSipDocs
/C/help/SIP/messageView.html” id=”module8” rollupState=”down”
title=”Message Board”> <MessageBoard> <Message filename=”default”/> <Message filename=”Welcome”/> </MessageBoard> </ModuleInstance> </Column> </Sheet> ...

  SIP 3包含门户布局、总体视图和导航配置的门户视图文件。这些门户视图类似于BEA门户模板文件;它们在视图(BEA页面)和模块(portlet)布局中包含表。然而,所有的模块配置信息都保存在SIP视图文件中。在Java Portlet中,portlet配置保存在portlet.xml文件中。而视图文件可能有5个表(想一想BEA页面)和20个模块(想一想portlet)。对于保存在视图文件中的模块配置和保存在portlet.xml文件中的portlet定义,它们的主要差别在于,当给出很多模块定义时,前者不会引起很大的开销。模块的实现是单个的servlet实例,它可以接收具有不同配置信息的多个请求。在一个门户服务器中,portlet的每个惟一配置都可能表示一个新的porlet实例。

  数据过滤是SIP的一个主要功能。有时候,应该只允许特定的受众访问特定的管理数据。IT服务提供者可能想为不同的受众提供其独有的管理数据视图——HR可能需要一个IT服务视图,而会计应该有他们自己的个性化视图。对于外包的情形,这个理念甚至更加重要,因为使客户对各自的相应数据的访问相互分离,这种做法在业务和法律上都具有重要的意义。

  基本的SIP身份验证要求用户验证。SIP 3中定义了传统的用户和角色概念,即使这已经包含在身份验证系统之中。SIP需要知道角色和用户,以便执行各种门户行为的授权,包括谁能够查看或编辑哪些内容。此外,SIP还支持其他的身份验证机制,比如LDAP,底层的Web服务器身份验证,或者用于创建定制身份验证的API。

  SIP 3门户框架包含术语“角色”的几个重要方面。SIP角色说明了要使用哪种数据过滤器,以及用户将会看到哪个视图。这也就定义了所有的模块配置(参见图2)。另外,SIP用户一次只能使用一个活动角色,而在大多数Web应用服务器中,一个用户可以同时属于多个角色。如果一个SIP 3用户拥有多个有效角色,他或她就可以使用一个下拉框,从一个门户角色切换到另一个(参见图1)。

图1:SIP 3界面快照。注意左上方的下拉列表,它允许用户在角色之间进行切换(Admin: Live Demo)。

图2:SIP 3 UML图。

门户服务器分析

  团队必须评估并选择满足他们不断涌现的新需要的门户服务器。选择门户服务器时要考虑的两个主要因素是:团队需要提供以前可用的那些功能,而且要在一个允许许多其他集成可能性的健壮门户平台中进行开发。有一些强大的开源门户平台,但是这些平台通常都是面向一个更加技术性的社区。它们可能与JSR 168不兼容;可能易用性不够,而且缺少健壮的集成选择。

  团队为他们的下一个版本选择了BEA WebLogic portal server 8.1。门户解决方案目录(http://dev.bea.com/products/wlportal/psc/index.jsp)提供了许多集成选择,而且门户管理应用程序提供了一个对用户友好的管理工具,它具有许多以前版本的SIP中的功能。

转向使用Java Portlet和BEA的Portal Server

  有了这个大有前途的门户服务器,团队已经准备好退出门户服务器市场,然后进入portlet内容市场。但是还有一些问题需要解决,包括:

  • 从模块转为portlet。
  • 转换门户视图。
  • 如何支持数据过滤。
  • 身份验证和授权要求更加松散的耦合。

从模块转向Portlet

  项目的第一个部分就是从SIP模块迁移到Java Portlet。幸运的是,Portlet API和Servlet API在请求和响应对象方面的用法十分类似。这简化了迁移的过程,因为所有的模块都是Servlet。很多代码可以保持不变,只有很少的代码需要重构。

  团队遇到的最大差异就是PortletURL和呈现参数的使用。通过使用servlet,SIP 3可以获得完整的HTTP请求和响应,并通过Web页面来回发送任意参数。SIP 3使用一个常见的编码实践,即传递一个模块ID参数来帮助识别特定模块配置的请求。在向下钻取(drill down)过程中遇到模块ID时,SIP门户服务器只在最大化的窗口中显示被请求的模块。SIP门户服务器不支持在一个浏览器中同时向下钻取两个模块。下面的JSP代码片断类似于SIP 3中的内容:

<a href="portal?service=<%=serviceID%>
&moduleID=<%=moduleID%>">
naviagation link</a>

  对于使用SIP 4的portlet的情况,PortletURL有助于向正确的portlet传递正确的参数。门户服务器必须能够确定哪个portlet应该接收哪个参数,并确保portlet获得正确的参数。使用上述技术不会奏效;所传递的参数需要重新设定。当在其他门户服务器中进行测试时,这个问题尤其明显,因为人们可以以他们喜欢的任意方式对portlet参数进行编码。要对SIP portlet代码或显示进行修改,或者同时修改二者。下面的技术将纠正这个参数传递问题:

PortletURL drillDownURL = 
response.createRenderURL(); drillDownURL.setParameter
("service", serviceID);

  此外,下面的内容已经更新到JSP中了:

<a href="<%= drillDownURL.toString()%>">
naviagation link</a>

  SIP产品预先使用了当前使用的一些Web开发工具和技术,而且在迁移过程中,上述纠正URL参数传递的工作是常有的。然而,通过把URL处理转移到Portlet API中,一些其他的选择成为可能。以前,模块中的向下钻取只会显示单个模块的内容。而通过使用Portlet API,团队可以同时在多个portlet中进行钻取和导航。当使用SIP诊断IT问题时,这尤其方便,因为在这种情况下,通常需要访问一些不同的点来获得对问题的全面认识。

转换门户视图

  门户视图功能很容易转换为BEA的术语和技术。事实上,BEA的book、页面和嵌套book等概念为SIP用户进行了很大的改进。SIP 3只支持一种表级别,这相当于包含许多所需页面的单个BEA门户book。在SIP 3中没有分层导航和门户布局。图1显示了SIP 3中提供的“表”,而图3 则显示了带有嵌套book和多层导航的SIP内容。SIP 3把它的视图文件保存为XML格式,如清单1所示,所以XSL转换可以把SIP 3视图文件迁移到BEA门户模板文件。

图3:BEA WebLogic Portal中的SIP 4。注意嵌套的book菜单导航,这是对SIP 3的重大改进。

支持数据过滤

  SIP中的数据过滤工具的功能没有改变,但是它们的应用程序进行了修改。数据过滤是面向用户的一个重要功能,它在很大程度上依赖于SIP 3用户当前所选择的角色。SIP 4使用的则是portlet首选项。当用户访问一个使用数据过滤的portlet时,SIP 4就获得了用户的过滤器首选项。SIP 4中的过滤器包含一种新的安全规范,该规范详细规定了过滤器是适用于某些角色、所有通过身份验证的用户,还是所有用户(包括匿名访问)。参见图4,了解企业过滤器和SIP portlet之间更新后的关系。

图4:SIP 4 UML图。

  把数据过滤迁移到portlet首选项中,可以使用更少的portlet为更多的用户受众服务。事实上,这对于所有的portlet首选项都是成立的。SIP 3在视图文件中使用模块配置,如清单1所示。如果一个用户喜欢其他的模块视图,SIP 3就需要有另一个角色、门户视图和模块配置集合。相比之下,portlet首选项允许多个用户从单个portlet配置定制自己的首选项。因此,SIP 3中所使用的数以百计或数以千计的模块配置现在可以等效于为数不多的几个portlet配置。

身份验证和授权

  身份验证和授权的概念也容易迁移到BEA产品中。所有管理用户、角色和组的BEA工具和集成选项现在都可以用于SIP。对于现有的SIP用户来说,可以创建一个WebLogic weblogic.Admin批处理文件,把所有的SIP用户和角色转换为BEA用户、角色和组。下面给出一个在迁移过程中创建的weblogic.Admin批处理文件的代码片断:

# create the user "sipadmin"
invoke -mbean Security:
Name=myrealmDefaultAuthenticator -method createUser sipadmin sipadmin "SIP Admin" # create the group "SIPAdministrator" invoke -mbean Security:
Name=myrealmDefaultAuthenticator -method createGroup SIPAdministrator "SIP Administrator" # create the role "SIPAdministrator",
any users in the group "SIPAdministrator" invoke -mbean Security:
Name=myrealmDefaultRoleMapper -method createRole "" SIPAdministrator "{Grp(SIPAdministrator)}" "" # add the user "sipadmin" to the group
"SIPAdministrator" invoke -mbean Security:
Name=myrealmDefaultAuthenticator -method addMemberToGroup SIPAdministrator sipadmin

  总之,上述概念重点强调了把SIP 3转换为SIP 4,后者是BEA门户服务器上的一个Java Portlet应用程序。创建用户、组和角色的任务可以很轻松地迁移到BEA的默认安全实现中,后者还提供了许多其他的身份验证和授权选项。借助于BEA门户的book和页面,门户布局和导航的设计变得更加灵活和强大。数据过滤在SIP 3中是绑定到活动角色上的,而在SIP 4中则是根据portlet首选项设定的。最后,数百到数千个模块配置已经缩减为为数不多的几个portlet配置,这些配置附加了特定于用户的portlet首选项。

结束语

  SIP团队从专用模块迁移到Java Portlet,并在BEA WebLogic门户服务器中找到了等效的(暂且不考虑多个方面的改进)的替代方案。虽然在迁移的过程中,我们遇到了许多挑战,但是也获得了许多意料之外的益处。借助于供应商中立的实现技术和大量的门户开发和部署工具,WebLogic Portal将会成为一个具有强大竞争力的JSR 168应用程序平台。在我们的项目中,一个比较好的转变就是同时使用其他门户服务器,比如Liferay。同时使用其他门户服务器,这实际上利用了JSR 168所提供的和没有提供的优势,而且现在门户服务器可以以自己的方式实现兼容性。如果您确定自己的portlet将用于门户服务器而不是BEA产品中,尽早同时使用其他门户服务器就非常重要。我们的团队还发现,使用Eclipse作为IDE和BEA远程调试可以节约大量时间。使用Eclipse还有一个好处,即可以在单一环境中进行开发,之后轻松地在多个门户服务器中测试portlet。

参考资料

  • www.managementsoftware.hp.com/products/sip/
  • www.openview.hp.com/
  • www.bea.com/framework.jsp?CNT=index.htm &FP=/content/products/weblogic/portal/
  • 图5:Portlet编辑界面,可在其中选择要使用的数据过滤器。该选择列表只显示了用户可用的过滤器,有助于替换图1中显示的角色下拉列表。

     

    表1:SIP 3.2和BEA WebLogic Portal Server的比较

     

    SIP 3.2和专有的门户框架

    BEA WebLogic Portal和作为portlet应用程序的SIP 4

    内容交付方式

    SIP模块,大约可以使用10-15个。模块主要集中于OpenView产品。

    portlet,BEA有一个大型的门户解决方案目录,支持任何通用的Java Portlet。对各种类型的集成都有许多选择。

    身份验证和授权

    一个支持其他身份验证系统的开放式框架,授权包含在SIP中,而且需要知道所有的用户和角色。具有开箱即用的受限身份验证选项。只允许同类的身份验证控制。

    一个支持其他身份验证系统的开放式框架,授权是在BEA授权中完成的,并且需要知道角色。有许多可用的身份验证选项。授权允许对身份验证进行同类或粒度控制。

    表示选项

    平面结构。一个表的集合(类似于BEA的页面),每个表有两列内容。

    分层结构。book、页面,包含嵌套book和更多页面。有多个菜单选项可用于导航,而且页面支持1到4列portlet。

 

原文出处

Developing a Service Information Portal on the WebLogic Platform

http://wldj.sys-con.com/read/117493.htm

dot dot dot

dot
  作者其它文章
您对本文的评价
您对这篇文章的看法如何?
太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分