门户网站工具 - 发行说明


1.0 局限性
   1.1 JSR 168 portlet 应具有 ID 属性
   1.2 禁用了 WSRP portlet 的编辑功能
   1.3 关系记录和 Portal V5.1
   1.4 “问题”视图中显示断开的链接警告消息
   1.5 Portal Designer 中的标记支持
2.0 已知问题
   2.1 当我在测试环境上运行 portlet 项目时,运行的却是先前运行的门户网站项目
   2.2 在我的 5.1 门户网站项目中更改缺省主题不会在服务器或测试环境中反映
   2.3(定制门户网站)不能打开已导入的门户网站项目或者从测试环境中创建的新的门户网站项目中的 license.html 和 privacy.html 文件(PQ93681)
   2.4 显示在“单击激活操作”portlet 上的菜单文字说明不正确
   2.5(portlet 部署描述符)使用 JSR 168 Portlet 部署描述符编辑器进行编辑
   2.6(迁移 portlet)将 Portal V4.2 portlet 迁移至 V5.0 失败
   2.7(导入/创建门户网站)与 WSRP 相关的错误显示在已导入的门户网站项目或者从测试环境中创建的新的门户网站项目的“问题”视图中(PQ95638)
   2.8 使用 config 方式创建的 Struts JSR168 portlet 在运行时不对 portlet 启用 config 方式

1.0 局限性

1.1 JSR 168 portlet 应具有 ID 属性

使用“新建 Portlet”向导创建 JSR 168 API portlet 时,Rational Software Development Platform 将自动指定 ID 属性。portlet.xml 文件的 <portlet-app/> 元素中应包括 ID 属性以向服务器唯一标识该 portlet。(此属性对应 IBM portlet API portlet 使用的 UID 属性。)

如果 JSR 168 API portlet 在 portlet.xml 文件中的 <portlet-app/> 元素中没有 ID 属性,则在将 portlet 导入到 Rational 工具工作空间之后立即添加 ID 属性及其唯一值。要添加 ID 属性,打开 portlet 部署描述符并使用“源代码”视图编辑它。在将 JSR 168 API portlet 部署至门户网站服务器或在门户网站项目中使用 JSR 168 API portlet 项目之后不要更改标识值。

没有 ID 属性的 JSR 168 API portlet 有一些局限性:

1.2 禁用了 WSRP portlet 的编辑功能

由于 Portal Designer 不支持 WSRP portlet,所以禁用了这些 portlet 的相关编辑功能,例如,“复制”和“移动”。虽然如此,仍然可以从 WebSphere Portal 导入 WSRP portlet,也可以将它们部署回 WebSphere Portal。

1.3 关系记录和 Portal V5.1

在运行包含关系记录列表或关系记录(SDO)的 portlet 时,可能会在服务器日志中看到以下错误:

[date and time] 4942fbd0 SystemOut O java.lang.LinkageError: Class org/eclipse/emf/ecore/EClass violates loader constraints: definition mismatch between parent and child loaders

可忽略此错误。

1.4 “问题”视图中显示断开的链接警告消息

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

1.5 Portal Designer 中的标记支持

Portal Designer 仅将 HTML、cHTML 和 WML 作为受支持的标记。如果对导入的项目中的页面或标签指定了其它受支持的标记,则将保留它们。但是,您不能更改这些标记,它们不会显示在“属性”视图中。

2.0 已知问题

2.1 当我在测试环境上运行 portlet 项目时,运行的却是先前运行的门户网站项目

当在 Websphere Portal 测试环境上运行时,门户网站项目优先于 portlet 项目。如果在测试环境上运行门户网站项目,就会在该门户网站项目与服务器配置之间产生一种关联。在可以使用同一个服务器配置运行 portlet 项目之前,将需要断开这种关联。

要更正该关联问题,遵循下列步骤:

  1. 在“服务器”视图中,从服务器的上下文菜单中选择添加和除去项目
  2. 除去 wps 项目、任何门户网站项目的 EAR 项目以及与门户网站项目(如果它们与服务器配置相关联的话)相关联的任何 portlet EAR 项目。

2.2 在我的 5.1 门户网站项目中更改缺省主题不会在服务器或测试环境中反映

对于 WebSphere Portal 5.1,当 Web 浏览器中先前显示了某个门户网站,接着使用此产品来修改此门户网站的缺省主题时,必须重新启动服务器才能完全应用新的缺省主题。

在 WebSphere Portal 测试环境中,通过重新发布门户网站配置来更改缺省主题将不起作用。必须重新启动该测试环境。

对于 WebSphere Portal 5.1,可通过应用 PK00826 更正此问题。此修订将包含在 WebSphere Portal 的将来版本中。

2.3 (定制门户网站)不能打开已导入的门户网站项目或者从测试环境中创建的新的门户网站项目中的 license.html 和 privacy.html 文件(PQ93681)

问题:因为编码不正确,所以不能使用 Page Designer 打开已导入的门户网站项目或者从测试环境中创建的新的门户网站项目中的 license.html 和 privacy.html 文件。

解决方案:对门户网站服务器或测试环境应用 APAR PQ93681,然后分别从门户网站服务器中重新导入项目或者从测试环境中重新创建项目。

注意:WebSphere Portal 5.1 和 WebSphere Portal 5.0.2.3 中已经解决了此问题,但是 WebSphere Portal 5.0.2.2 中尚未解决此问题。

2.4 显示在“单击激活操作”portlet 上的菜单文字说明不正确

当运行或部署启用了“单击激活操作”的 portlet 项目时,“单击激活操作”菜单上没有显示菜单文字说明。而是显示操作名称。如果需要正确显示菜单文字说明,则可以使用此产品来将 portlet 项目作为 WAR 文件导出,然后使用管理 Web 模块 portlet 在 WebSphere Portal 上安装它。


这是只有 WebSphere Portal 5.1.0.0 才具有的问题,可以通过更新为 WebSphere Portal 5.1.0.1 来解决该问题。

2.5 (portlet 部署描述符)使用 JSR 168 Portlet 部署描述符编辑器进行编辑

问题:在 JSR 168 Portlet 部署描述符中,不能在 Portlet 集区域中编辑 portlet 名称。

解决方案:在“源代码”页面中编辑 portlet 名称。

2.6 (迁移 portlet)将 Portal V4.2 portlet 迁移至 V5.0 失败

问题:如果类路径太长,则更改 Portlet API 级别会失败。

解决方案:您必须更正已迁移的 portlet 项目的 Java 构建路径。对于必需的 Java 构建路径,您可以参阅由“新建 Portlet 项目”向导生成的基本 portlet 项目。将缺少的必需 JAR 文件添加至已迁移 portlet 项目的 Java 构建路径。

2.7 (导入/创建门户网站)与 WSRP 相关的错误显示在已导入的门户网站项目或者从测试环境中创建的新的门户网站项目的“问题”视图中(PQ95638)

问题:当从 WebSphere Portal 导入现有门户网站站点或者从测试环境中创建新的门户网站项目时,与 WSRP 相关的验证错误将显示在已导入或已创建的门户网站项目的“问题”视图中。

解决方案:在导入门户网站站点或者创建新的门户网站项目之前,分别对 WebSphere Portal 或 WebSphere Portal 测试环境应用 APAR PQ95638。

注意:WebSphere Portal 5.1 和 WebSphere Portal 5.0.2.3 中已经解决了此问题,但是 WebSphere Portal 5.0.2.2 中尚未解决此问题。

2.8 使用 config 方式创建的 Struts JSR168 portlet 在运行时不对 portlet 启用 config 方式

当您在选择了 config 方式的情况下创建 Struts JSR168 portlet,并且在门户网站服务器或测试环境中运行此 portlet 时,portlet 皮肤不显示可用来选择 config 方式的选项,该选项在 portlet 皮肤上是用一个扳手表示的。

存在两个问题。
  1. 该工具未正确地将 portlet 配置设置为使用 config 方式。
  2. 缺省情况下,StrutsPortlet 的 JSR168 版本不支持 config 方式。因此,即使该工具正确配置了 portlet,该 portlet 也不会理解 config 方式。

提供了一种对 Struts JSR168 portlet 启用 config 方式的变通方法。一旦在 portlet 项目中创建了使用 config 方式的 Struts JSR168 portlet:

  1. 在此项目中(而不是在缺省包中),创建 StrutsPortlet 的一个子类,该子类将覆盖 doDispatch 方法。在 doDispatch 方法中添加代码以检查 config 方式。请参阅以下代码段:
    package my.pkg; // do not use default package. 
    import java.io.IOException;
    import javax.portlet.*;
    import com.ibm.portal.struts.portlet.StrutsPortlet;
    
    /**
    * StrutsPortlet that can be used with config mode. 
    */
    public class ConfigEnabledStrutsPortlet extends StrutsPortlet {
    	protected void doDispatch(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    	if ( !WindowState.MINIMIZED.equals(request.getWindowState()) ) {
    	PortletMode mode = request.getPortletMode();
    	if ( mode.toString().equals("config") ) { // checking for "config" mode. 
    	     doConfigMode(request, response); // if is, call doConfigMode(request, response)
    	     return;
    	   }
    	}
    	     super.doDispatch(request, response);
    	}
    	// code to handle "config" mode. 
    	public void doConfigMode(RenderRequest request, RenderResponse response)
    	throws PortletException, IOException
    	{
    	     super.doService (request, response);
    	}
    	}
  2. \WebContent\html\configure 文件夹重命名为 WebContent\html\config。注意:如果其它标记类型也启用了 config 方式,则还应该将这些文件夹重命名 - 从 configure 重命名为 config。当提示您更新引用时,单击
  3. 打开 \WebContent\WEB-INF\portlet.xml 文件。查找 Struts portlet。这是一个 portlet-class = com.ibm.portal.struts.portlet.StrutsPortlet 的 portlet。
  4. 将以下内容:
    <portlet>
    	..
    	<portlet-class>
    	     com.ibm.portal.struts.portlet.StrutsPortlet
    	</portlet-class>
    	...
    	<init-param>
    	     <name>config/html/configure</name>  <!-- if you have other markup - please apply the same changes -->
    	     <value>/WEB-INF/struts-html-configure.xml</value>
    	</init-param>
    	...
    	<supports>
    	     <mime-type>text/html</mime-type>
    	     <portlet-mode>view</portlet-mode>
    	     <portlet-mode>configure</portlet-mode>
    	</supports>
    	...
    	<portlet-preferences>
    	...
    	     <preference>
    	     <!-- if you have other markup - please apply the same changes -->
    <name>com.ibm.struts.portal.page.configure.html</name> <value>html/configure/index.jsp</value> </preference> </portlet-preferences> </portlet> <custom-portlet-mode> <portlet-mode>configure</portlet-mode> </custom-portlet-mode>
    更改为:
    <portlet>
    		...
    		<!-- change the portlet-class value to the one that you just created -->
    		<portlet-class>
    			my.pkg.ConfigEnabledStrutsPortlet  
    		</portlet-class>
    		 ...
    		<init-param>
    			<name>config/html/config</name>
    			<value>/WEB-INF/struts-html-configure.xml</value>
    		</init-param>
    		 ...
    		<supports>
    			<mime-type>text/html</mime-type>
    			<portlet-mode>view</portlet-mode>
    			<portlet-mode>config</portlet-mode>
    		</supports>
    		    ...
    		<portlet-preferences>
    			 ...
    			<preference>
    				<name>com.ibm.struts.portal.page.config.html</name>
    				<value>html/config/index.jsp</value>
    			</preference>
    		</portlet-preferences>
    	</portlet>
    	<custom-portlet-mode>
    		<portlet-mode>config</portlet-mode>
    	</custom-portlet-mode>  
  5. 保存该 portlet.xml 文件。

返回到主自述文件