探查 Portal 升级与修补问题

问题描述
WL Portal 8.1 实现 Service Pack 更改的方式与 WL Server 略有不同。由于 Portal 应用程序含有包含 BEA 代码的库,所以升级时也需要更新包含 BEA 代码的 jar 文件。其中一些文件位于“应用程序”级别,而另一些文件在每个“Portal Web 应用程序”的 WEB-INF/lib 目录中。

补丁以 jar 文件形式发行,其中包括的 jar 包含已更改的代码。发布补丁时,应将其放在两处:第一处是用以替换原有 JAR 的应用程序,第二处是 WLP 安装位置,以便将来的应用程序包含它。

本模式讨论升级或修补 WLP 应用程序时有时会遇到的各种问题。其中的许多问题只要知道查找途径和寻找内容即可解决。此外,您应尽力为支持代表收集更多信息,这将使问题得到更快解决。


故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。

快速链接

为什么发生此问题?
根据升级或补丁的类型、复杂性、所涉及的其它补丁以及其它许多因素,可能会发生以下一个或多个问题。请注意,您发现的异常或问题可能看起来与示例相似,然而它们所指的却是其它故障。这些示例仅供作为执行诊断及可能的修理过程时的参考指南。

  1. 数据库错误,找不到表
Caused by: com.bea.p13n.entitlements.common.PolicyMgmtAccessException: Attempt to access Entitlement Policy Mgmt API by user in invalid role. Entitlement Policy operation attempted by disallowed user ["Unable to migrate DA policy ref data from LDAP to RDBMS"].
...
Caused by: java.sql.SQLException: [BEA][Oracle JDBC Driver][Oracle]ORA-00942: table or view does not exist
...

这可能是因升级之后未安装新表或对 schema 所做更改而引起的。请记住运行 BEA 所提供的任何 SQL 更改,检查授权以确保表可见,并且确保在正确的表空间中创建表。另外,现有的 JAR 较旧或不正确可能会导致运行不正确的查询。下文将对此做更多探讨。
返回页首

  1. NoClassDefFoundError
java.lang.NoClassDefFoundError: com/bea/content/virtual/VirtualNode
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at com.bea.netuix.servlets.controls.content.backing.JspBackingFileFactory.newInstance...
at com.bea.netuix.servlets.controls.content.backing.JspBackingFileFactory.getBackingFileInternal...
at com.bea.netuix.servlets.controls.content.backing.JspBackingFileFactory.getBackingFile...
at com.bea.netuix.servlets.controls.Backable$Impl.initializeBackingFile(Backable.java:114)
at com.bea.netuix.servlets.controls.page.Book.init(Book.java:94)
at com.bea.netuix.nf.ControlLifecycle$1.visit(ControlLifecycle.java:149)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:280)
...
这可能是表示升级出错最明显的迹象。由于组成 WLP 的 JAR 互相引用,所以要求它们在版本和 Service Pack 级别方面必须一致。不可以只是因为 SP4 中修复了某个问题,就用 SP4 jar 替换 SP3 jar。可是大多数情况下,某个 JAR 仍然针对的是较早的 Service Pack,从而导致这种结果。

    解决方法备注
    • 在日志中查找未找到的类名
    • 查明引起异常的根源
    • 运行 Portal Consistency Checker 工具,以验明是否有 JAR 不匹配
    • 使用 WL Workshop 展开不一致的 jar,然后用内置编辑器打开 /META-INF/manifest.mf 文件。
    • 查找发行信息,查看其中是否提到那个错误的 jar。
    • 更新 Portal 库,看看这样是否能修复该问题
返回页首
  1. 更新 Portal 库无法进行

为了确保 Portal 库已从 WL Workshop 内得到更新,请务必检查文件目录以确保 JAR 文件并非只读。如果使用源码控制而未将文件签出,则可能会出现这种情况。如果从别处复制文件且保持文件属性,也可能会出现这种情况。

    解决方法备注
    1. 关闭 WL Server,关闭 WL Workshop
    2. 通过命令提示符或 Windows 资源管理器删除 /.workshop
    3. 删除 /workshop/javelin-jar-store/wlw*:
      在 Win32 命令提示符下键入“set”,找到临时目录。在 UNIX 上,临时目录通常为 /var/tmp
    4. 扫描 /META-INF//WEB-INF/lib,查找可能为只读的 jar 文件。必要时,使用源码控制将文件签出
    5. 打开 WL Workshop 和您的应用程序。右键单击该应用程序 -> Install -> Update Portal Libraries
    6. 检查文件日期和“表明”条目以获得正确的 Service Pack 信息
返回页首
  1. 补丁消失

WLP 补丁经常重叠。例如,假设您安装了 CR123456(仅为举例)而且它运行完全正常。然后,您在与另一问题的支持人员配合工作时发现自己需要 CR134567。这两个补丁都包含一份 netuix_servlet.jar。安装第二个补丁后,通过 CR123456 已解决的问题会再次出现。在此情况下,您需要与支持人员配合工作,以确保他们知道您在获得另一补丁之前都在运行哪些补丁。这样做的目的是确保这些补丁相互兼容。

返回页首
  1. 补丁在另一应用程序中不起作用

如果收到补丁后只将其放在了正在使用的应用程序中,则需要确保将该补丁也放在安装目录中。例如,如果某一补丁包含 netuix_servlet.jar,请在以下位置放置一份:

BEA_HOME_DIR\weblogic81\portal\lib\netuix\web\netuix_servlet.jar

如果发生这种情况,您需要将其手动复制到新的应用程序,因为它在创建时会自动复制到每一个新的 Web 应用程序中。

返回页首

其它备注:

  1. 有可能存在这种情况:您所使用的补丁并未加入到您要升级到的下一 Service Pack 中。请与支持人员进行核对,因为您可能会再次需要为当前 Service Pack 所建立的同一补丁。留意所运行的补丁并在升级时将其通知支持人员,这种做法始终是可取的。
  2. 使用 Portal Consistency Checker 工具。这是一个通用工具,可以用来对比该 Service Pack 的基础安装检查应用程序中的所有 JAR 文件。只有已知具有补丁的 JAR 才应存在差异。
  3. Portal Consistency Checker

  4. 手动检查一致性的一种方式是使用 JAR 声明文件。可以使用 WL Workshop、Winzip 查看此信息,也可以解开 jar 然后使用文本编辑器来查看此信息。对于已修补的 JAR,表明文件中应出现以下内容:
Implementation-Title: BEA WebLogic Portal 8.1 SP3
Implementation-Version: 8.1.3.0 with CR189681
Implementation-Vendor: BEA Systems, Inc.

对于补丁,使用命令提示符查看表明文件内容的方式如下:

C:\tmp>jar xvf C:\weblogic\user_projects\applications\portal\PortalApp\wps.jar META-INF/MANIFEST.MF
extracted: META-INF/MANIFEST.MF

C:\tmp>type META-INF\MANIFEST.MF
Manifest-Version: 1.0
Specification-Title: BEA WebLogic Portal 8.1 SP4 11/30/2004 04:22:17 #471877
Class-Path: wps_util.jar p13n_ejb.jar content.jar
Created-By: Apache Ant 1.5
Implementation-Title: BEA WebLogic Portal 8.1 SP4 11/30/2004 04:22:17 #471877
Specification-Vendor: BEA Systems, Inc.
Specification-Version: 8.1.4.0
Implementation-Version: 8.1.4.0
Implementation-Vendor: BEA Systems, Inc.
Implementation-URL: http://www.bea.com/

C:\tmp>

  1. 使用 Portal/p13n 调试可获得低级调试信息。通常,可以为单个类或包开启调试功能,这样便可看到可能有助于发现问题所在的消息。例如,查询失败时可能会在调试输出中显示表名和列名,同时会示意您查看 schema。记住将以下文件放置在您的域起始目录中,然后重新启动服务器。

    P13n Debugging Guidelines (English)

    Debug.properties 文件示例

reloadable: off
usePackageNames: on

#Example of package-level with all subpackages
com.bea.content

#Example of particular class file
com.bea.campaign.internal.CampaignEventListener

#Comment it out to stop the debugging
#com.bea.campaign

  1. 升级之前应该全文阅读“发行说明”、“升级指南”和“支持配置”。对数据库所做的任何更改、其它配置更改以及行为差异都将在此详陈。

    WL Portal 8.1 Release Notes (English)
    WL Portal 8.1 Upgrade Guide (English)
    Supported Configurations (English)

返回页首

已知问题
您可定期查看您的 WLP 版本的“发行说明”以获得 Service Pack 中的“已知问题”或“已解决的问题”的详细信息,而且还可浏览与升级和补丁有关的问题。为方便起见,下面提供了这些发行说明的链接:
搜索还将返回“发行说明”,以及其它“支持解决方法”和与 CR 相关的信息(在需要更多帮助?中说明)。如果客户签订了技术支持合同,则可以登录 http://support.bea.com/,登录后会看到为 Solutions 和 Bug Central 提供的 Browse portlet,可在其中按产品版本浏览最新提供的 CR。
返回页首
需要更多帮助?
如果您已经理解这个模式,但仍需要其它帮助,您可以:
  1. http://support.bea.com/上查询 AskBEA(例如,使用“upgrading to WLP 8.1”),以查找其它已发布的解决办法。技术支持合同客户:确保已经登录,可以访问提供的与 CR 有关的信息。
  2. http://newsgroups.bea.com/ 上,向 BEA 的某个新闻组提出更详细具体的问题。
如果这还不能解决您的问题,并且您拥有有效的技术支持合同,您可以通过登录以下网站来打开支持案例:http://support.bea.com/

反馈

请给我们提供您的意见,说明此支持诊断模式“探查 Portal 升级与修补问题”一文是否有所帮助,您需要的任何解释、以及对支持诊断模式的新主题的任何要求。


免责声明:

依据 BEA 与您签署的维护和支持协议条款,BEA Systems, Inc. 在本网站上提供技术技巧和补丁供您使用。虽然您可以将这些信息和代码与您获得 BEA 授权的软件一起使用,但 BEA 并不对所提供的技术技巧和修补程序做任何形式的担保,无论是明确的还是隐含的。

本文档中引用的任何商标是其各自所有者的财产。有关完整的商标信息,请参考您的产品手册。

返回页首