本文涉及的信息只引用由外部系统生成的 URL。WebSphere Portal 架构内生成的 URL 是很简单的,应该使用 IBM Web Content Management 的 UrlCmpnt 标记。
新 Web Content Viewer portlet 的第一版于 2009 年 1 月在 IBM Lotus and WebSphere Portal Business Solutions Catalog 中提供。升级版在 2009 年底发布,其中包括 IBM WebSphere Portal V6.1.5 功能部件包。除了许多新功能之外,升级版也是以 Java Portlet Specification JSR 286 第 2 版为基础的。尽管这包含了许多新功能,但较之早期的 Web Content Viewer(基于 IBM Portlet API 的)也有一个缺点:传递一个参数到查看器 portlet 变得有点复杂。在这篇专栏文章中,您将会有意外的收益。
在 IBM Portlet API 版本的查看器中,您只需要简单地向正在寻找页面的 URL 中添加一个查询参数,该页面上所有的 IBM portlet 将收到该参数,然后您配置 portlet 来监听广播并创建一个如下格式的 URL:
http://[PORTAL_HOST]/[PORTAL_CONTEXT_ROOT]/[PORTAL_PAGE_URL_MAPPING]/?WCM_GLOBAL_CONTEXT=
<pathCmpnt type="noprefixservlet" />/[LIBRARY]/[SITE]/[SITE_AREA_PATH]/[CONTENT]
例如:http://mysystent/wps/portal/home?WCM_GOBAL_CONTEXT=/mynewslib/usnews/news1。
这个 portlet 用起来很简单,但是它也有以下缺点:
由于受到显示的限制,本文中显示的 URL,其中一些可能看起来是由多行构成,但实际上,每个 URL 是连续的一行。
由于参数不能保存在 URL 中,而要保存在会话中(即使在异步使用情况下),因而影响门户服务器内存消耗。
一旦与页面交互,参数将不再在 URL 中 — 而存储在会话中 — 您不再需要将您的选择加入书签。
缓存在浏览器中的静态页面将不再有效,因为选择内容不能被编码成 URL。这意味着浏览器不能分辨新闻 1 和新闻 2 ,因此也不能在浏览器上缓存。
让我们看看在 JSR 286 新时代查看器是如何工作的。
在新的查看器中,您可以在 WebSphere Portal 中使用 URI 分解器框架来从外部系统寻找网页或内容项。URI 分解器框架是一个普通的框架,也可用来促进定制 URI 模式。Web Content Management 定义模式 wcm: 如下:
wcm:path:LIBRARY/SITE_AREA_PATH/CONTENT [[& page=unique_name | object_id] &mapping=mapping | ¤t=true]
这意味着您可以提供路径给内容,选择提供下面之一:
一个目标页面,使用惟一的页名或其对象 ID 。
一个 URL 映射。
在 URL 中选定的、要在 URI 之前使用的当前页面。
如果您不能提供上述任何一个,WebSphere Portal 自动尝试寻找正确的页面。只有当您正在使用 Web Content Pages 时该方法才有效,在这个 Web Content Pages 中您可以将 Web Content Management 网站区域(site area )映射到门户页面,以便于 WebSphere Portal 意识到它们之间的关联。
因此,现在您如何获取一个完整的 URL 呢?有两个不同的选择:
直接通过 /wps/poc or /wps/mypoc 访问 WebSphere Portal 分解器框架。
为 WebSphere Portal 使用外部应用程序了解的任何 URL。