门户网站和 Portlet 工具发行说明

© Copyright International Business Machines Corporation 2006. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM® Corp.

发行说明

1.0 局限性
   1.1 “问题”视图中显示了链接中断警告消息
   1.2 Portal Designer 中的标记支持
   1.3 未正确地使用缺省调色板
2.0 已知问题与变通方法
   2.1 需要对“新建门户网站项目”向导的目标运行时与门户网站服务器版本进行手工同步
   2.2 在“样式”对话框中编辑 CSS 内容类型 JSP 文件
   2.3 为 JSF 生成的服务客户机代码在 JSR 168 Faces Portlet 中不起作用
   2.4 导入门户网站项目时,系统发出了“文件不一致”消息
   2.5 无法运行不具有 Portlet 应用程序标识的 JSR 168 Portlet 或者包含此类 Portlet 的门户网站项目
   2.6 检测到的 WebSphere Portal 6.0 服务器状态为“已停止”,即使该服务器正在运行亦如此
   2.7 在运行门户网站项目或将其部署到 Portal 6.0 后,Portlet 无法显示在页面中
   2.8 使用 Document-Literal 样式 WSDL 创建业务流程消息后,消息名称未显示在向导中
   2.9 如果 JSR 168 Portlet 项目包含不同类型的 Portlet,则表明协作向导缺省操作参数可能不正确
   2.10 更改唯一名称的缺省值后,任务页面容器停止工作
   2.11 在部署期间,从 Rational Developer 6.x 迁移的某些门户网站项目可能导致 NoModuleFileException 异常
   2.12 设置 Faces Portlet 的 PARENT_LAST 类装入器方式
   2.13 对于使用 Rational Developer 6.x 创建的门户网站项目,“在 WebSphere Portal V5.1 测试环境中运行”可能会失败
   2.14 样本库中的门户网站和 Portlet 样本以及“导入门户网站”向导按功能进行了过滤

1.0 局限性

1.1 “问题”视图中显示了链接中断警告消息

在使用“新建门户网站项目”向导从样本库导入门户网站样本项目或者创建新的门户网站项目时,“问题”视图显示了链接中断警告消息。

1.2 Portal Designer 中的标记支持

在此版本的 Rational® Developer 中,Portal Designer 仅支持以 HTML、cHTML 和 WML 格式进行显示。如果对所导入项目中的页面或标签指定了其他受支持的标记语言,则 Rational Developer 支持显示这些标记语言,但不能对其进行编辑。这些标记语言将不会显示在“属性”视图中。

1.3 未正确地使用缺省调色板

除非对页面指定了调色板,否则在 WebSphere® Portal 6 中将使用缺省调色板。但是,在 Portal Designer 中,当未指定调色板时,将使用祖代页面的调色板,而不是使用缺省调色板。

2.0 已知问题与变通方法

2.1 需要对“新建门户网站项目”向导的目标运行时与门户网站服务器版本进行手工同步

在“新建门户网站项目”向导中,选择门户网站服务器版本时并不会自动更新目标运行时。您必须对门户网站服务器版本设置和目标运行时设置进行手工同步。例如,对于版本为 6.0.0.x 的门户网站服务器,必须选择 WebSphere Portal V6.0 运行时;对于版本为 5.1.0.x 的门户网站服务器,必须选择 WebSphere Portal V5.1 运行时。如果目标运行时版本与门户网站服务器版本不同步,则部署门户网站项目时,门户网站服务器可能会损坏或变为不可用。

2.2 在“样式”对话框中编辑 CSS 内容类型 JSP 文件

在 WebSphere Portal V6.0 中,如果在“样式”对话框中编辑 CSS 内容类型 JSP 文件(例如 styles.jsp 或 styles_theme.jspf),在该对话框中可能会显示 JSP 表达式。无法在该对话框中修改这些 JSP 表达式,您必须在 CSS Designer 源代码面板中对其进行修改。

2.3 为 JSF 生成的服务客户机代码在 JSR 168 Faces Portlet 中不起作用

对于 JSR168 Faces Portlet,如果使用任何下列工具来在 Faces JSP 中生成服务客户机,则生成的页面代码在 WebSphere Portal 6.0 或 5.1 上无法正确工作。受影响的工具包括:

这是由于 jsf-Portletbridge.jar 中包含的 JSR168 Faces Portlet 运行时的新实现与先前实现不同而引起的。

在新实现中,如果将 Faces JSP 的页面代码 Bean 声明为请求作用域受管 Bean,则它的生命周期不会跨越 Portlet 的操作阶段和呈示阶段。在生成的 Web Service 客户机代码中,将使用页面代码 Bean 在操作阶段对 Web Service 的结果进行高速缓存。但由于它在请求作用域内,因此在呈示阶段将创建新实例。所以,高速缓存的结果将丢失。

有两个可能的解决方案:

  1. 将 Bean 置于会话作用域中(在 faces-config.xml 中进行配置)。如果采用此方案,您只需在配置文件中更改一行代码。
  2. 此方案比前一方案复杂,但却是在 JSR168 Portlet 中实现服务客户机的首选方法。此方案遵循 JSR168 Portlet 的最佳编程实践原则,并启用了更好的“后退”按钮和书签支持。
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("resultValue", resultValue);
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
request.getPortletSession().put("resultValue", resultValue);
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("inputValue", inputValue);
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
String inputValue = request.getParameter("inputValue");

2.4 导入门户网站项目时,系统发出了“文件不一致”消息

导入门户网站项目时,系统可能会显示以下问题消息框:“下列工作空间文件与编辑器不一致。要使用工作空间内容来更新编辑器吗”。请单击“是”。 

2.5 无法运行不具有 Portlet 应用程序标识的 JSR 168 Portlet 或者包含此类 Portlet 的门户网站项目

根据 JSR 168 规范,Portlet 应用程序标识是可选的,但 Rational® Developer 无法正确发布不带标识的 Portlet。如果没有这些标识,Rational Developer 就不会生成 Portlet。如果从另一个来源导入 Portlet,则可能会创建 Portlet。要解决此问题,请打开该项目的 Portlet 部署描述符,然后在“源代码”选项卡中添加 Portlet 应用程序标识。例如:
<portlet-app xmlns=... version=... xmlns:xsi=... xsi:schemaLocation=... id="ENTER_YOUR_ID_HERE">
...
</portlet-app>

2.6 检测到的 WebSphere Portal 6.0 服务器状态为“已停止”,即使该服务器正在运行亦如此

当服务器正在运行时,如果检测到的服务器状态为“已停止”,则首先请确保 SOAP/RMI 连接器端口正确,然后确保在服务器编辑器中使用的 WebSphere 安全性凭证正确。如果它们不正确,则检测到的服务器状态永远不会是“已启动”。如果它们正确,但服务器状态仍是“已停止”,则表明可能存在 WebSphere Application Server V6.1 与 WebSphere Portal V6.0 共存问题。

最常见的情况是,在本地机器上已安装了 WebSphere Application Server 6.1 服务器,并且您开始使用新工作空间。在这个新工作空间中,将自动创建并初始化 WebSphere Application Server 6.1 服务器实例,这将导致 Portal 6.0 状态检测功能无法正确运行。如果刚刚创建了 WebSphere Application Server V6.1 服务器,接着创建 Portal 6.0 服务器,也会发生此问题。

解决方案是,在同一个工作空间中重新启动 Rational 产品。于是,只要未初始化 WebSphere Application Server 6.1 服务器,即,只要它的状态保持空白而不是“已停止”或“已启动”,Portal 6.0 服务器实例就应该能够正常工作。

2.7 在运行门户网站项目或将其部署到 Portal 6.0 后,Portlet 无法显示在页面中

在运行门户网站项目或将其部署到 Portal 6.0 后,Portlet 无法显示在页面中。为了最大程度地减轻此问题的影响,在不必进行完全部署的情况下,应该使用仅配置部署。

如果确实遇到问题,请尝试在不部署任何 Portlet 的情况下运行门户网站项目的仅配置部署。通常,这将使该门户网站再次正确地呈示 Portlet。

2.8 使用 Document-Literal 样式 WSDL 创建业务流程消息后,消息名称未显示在向导中

如果正在创建新的业务流程消息,并且 WSDL 文件采用 Document-Literal 样式,则输入消息名称和输出消息名称可能不会显示在向导的第二页中。您仍能够选择这些消息并在向导右边查看消息详细信息。尽管消息名称未显示在向导中,但生成的代码将是正确的。 

2.9 如果 JSR 168 Portlet 项目包含不同类型的 Portlet,则表明协作向导缺省操作参数可能不正确

如果使用协作向导来创建源 Portlet 或目标 Portlet,并且 JSR 168 Portlet 项目包含多种 Portlet 类型,例如一个基本 Portlet 和一个 Struts Portlet,则向导中的缺省操作参数可能不正确。

在基本 Portlet 和 Faces Portlet 中,缺省操作参数应该是 ACTION_NAME_PARAM,但用户可以选择另一个值。
在 Struts 中,操作参数必须是 spf_strutsAction。

2.10 更改唯一名称的缺省值后,任务页面容器停止工作

任务页面容器中唯一名称的缺省值如下所示:
WebSphere Portal V6.0:ibm.portal.MyTasks
WebSphere Portal V5.1:wps.MyTasks

在 Portal Designer 中,当使用唯一名称与上面列示的名称不同的另一页面时,执行部署后,WebSphere Portal 无法将其识别为任务页面容器页面。 

变通方法:执行部署后,通过执行下列步骤在“我的任务”Portlet 中更改 TaskPageContainerUniqueName 参数值:
 1. 打开“管理”>“Portlet 管理”>“Portlet”
 2. 对于“我的任务”Portlet,单击“配置 Portlet”按钮
 3. 对于 TaskPageContainerUniqueName 参数,单击“编辑”。
 4. 使用下列值,将此参数值更改为 Portal Designer 中的新唯一名称:

WebSphere Portal V6.0:ibm.portal.MyTasks
WebSphere Portal V5.1:wps.MyTasks
 5. 单击“确定”。 

2.11 在部署期间,从 Rational Developer 6.x 迁移的某些门户网站项目可能导致 NoModuleFileException 异常

如果已将门户网站项目从 Rational Developer 6.x  迁移到 Rational Developer 7.0 工作空间,则可能会导致部署失败并发生 NoModuleFileException 异常。发生这种情况时,请执行以下过程以解决问题。

      <module id="WebModule_1163447032109">
          <web>
              <web-uri>wps.war</web-uri>
              <context-root>wps</context-root>
          </web>
      </module>
      <module id="WebModule_WSRP">
         <web>
            <web-uri>wps_facade.war</web-uri>
            <context-root>/wsrp</context-root>
         </web>
      </module>
      <module id="EjbModule_1">
          <ejb>wp.scheduler.ejb.jar</ejb>
      </module>
      <security-role id="SecurityRole_1">
         <description>Everyone in the enterprise.</description>
         <role-name>Everyone Role</role-name>
      </security-role>
      <security-role id="SecurityRole_2">
         <description>All Authenticated users in the enterprise.</description>
         <role-name>All Role</role-name>
      </security-role>
      <security-role id="SecurityRole_3">
         <description>No users in the enterprise.</description>
         <role-name>No Role</role-name>
      </security-role>

2.12 设置 Faces Portlet 的 PARENT_LAST 类装入器方式

由于 WebSphere Portal 6.0 中交付的 jsf-ibm.jar 版本已过期,因此,如果将 Portlet Web 模块的类装入器方式设置为 PARENT_FIRST,则某些 JSF 组件无法在 Portlet 中正确呈示。这是因为,当类装入器方式设置为 PARENT_FIRST 时,将使用 WebSphere Portal 6.0 中的 jsf-ibm.jar 来代替 Portlet Web 模块中包含的副本。

在 jsf-ibm.jar 中,只有与 URI http://www.ibm.com/jsf/html_extended 相对应的组件受影响。Faces IBM Portlet 和 Faces JSR168 Portlet 都会受影响。

在下列情况下,Portlet Web 模块的类装入器方式将设置为 PARENT_FIRST,因此需要对其进行更改:

要解决此问题,请打开包含 Portlet 项目的 EAR 项目中的 application.xml 文件,然后打开“部署”选项卡。在“应用程序”部分中,请查找显示了 EAR 和 Portlet 项目的树。选择 Portlet 项目,然后将“类装入器方式”由“PARENT_FIRST”更改为“PARENT_LAST”。要使此更改在目标服务器上生效,可能需要再次发布该应用程序。
如果已通过 WebSphere Portal 管理页面或 xmlAccess 命令使用 WAR 将该 Portlet 直接安装在 WebSphere Portal 中,则类装入器方式就会设置为 PARENT_LAST。在这种情况下,该 Portlet 能够正常运行,而不需要采用任何变通方法。

2.13 对于使用 Rational Developer 6.x 创建的门户网站项目,“在 WebSphere Portal V5.1 测试环境中运行”可能会失败

在通过项目交换功能将使用 Rational Developer 6.x 创建的 5.1.0.1 版门户网站项目导入 Rational Developer 7.0 工作空间后,“在 WebSphere Portal V5.1 测试环境中运行”可能会失败。

变通方法:执行下列步骤,修改 .portalsettings 文件内容:
 1. 打开“窗口”>“打开透视图”>“其他”...。
 2. 选择“资源”,然后在“打开透视图”对话框中单击“确定”。
 3. 在“导航器”视图中展开门户网站项目。
 4. 选择 .portalsettings 文件,然后使用文本编辑器将其打开。
 5. 插入以下内容。
    <?xml version="1.0" encoding="UTF-8"?>
    <portalSettings>
         <portal-version version="5.1.0.1"/>
         <portlets-ear-project portlets-ear-project-name=""/>
         <process-integration mytaskspage-uniquename="wps.MyTasks"/>
     </portalSettings>

2.14 样本库中的门户网站和 Portlet 样本以及“导入门户网站”向导按功能进行了过滤

要查看“导入门户网站”向导以及样本库中的门户网站和 Portlet 样本,必须打开“Web 开发者(高级)”功能。要启用此功能,请转到“帮助”>“欢迎”。然后,在“欢迎”中,单击屏幕角部的“启用角色”按钮。然后,选择角色“Web 开发者(高级)”以将其打开。重新启动向导或样本库,以使更改生效。