|
问题描述
WL Portal 8.1 实现 Service Pack 更改的方式与 WL Server 略有不同。由于门户应用程序含有包含 BEA 代码的库,所以升级时也需要更新包含 BEA 代码的 jar 文件。其中一些文件位于“应用程序”级别,而另一些文件在每个“门户 Web 应用程序”的 WEB-INF/lib 目录中。
补丁以 jar 文件形式发行,其中包括的 jar 包含已更改的代码。发布补丁时,应将其放在两处:第一处是用以替换原有 JAR 的应用程序,第二处是 WLP 安装位置,以便将来的应用程序包含它。
本模式讨论升级或修补 WLP 应用程序时有时会遇到的各种问题。其中的许多问题只要知道查找途径和寻找内容即可解决。此外,您应尽力为支持代表收集更多信息,这将使问题得到更快解决。
故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。 (DRE:如果在执行了以下所有任务后仍然不能解决问题,就应将问题提交给高级工程师做进一步探查。)
为什么发生此问题?
根据升级或补丁的类型、复杂性、所涉及的其它补丁以及其它许多因素,可能会发生以下一个或多个问题。请注意,您发现的异常或问题可能看起来与示例相似,然而它们所指的却是其它故障。这些示例仅供作为执行诊断及可能的修理过程时的参考指南。
- 数据库错误,找不到表:
Caused by: com.bea.p13n.entitlements.common.PolicyMgmtAccess
Exception: 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 较旧或不正确可能会导致运行不正确的查询。下文将对此做更多探讨。
- 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.Jsp-
BackingFileFactory.newInstance...
at com.bea.netuix.servlets.controls.content.backing.Jsp-
BackingFileFactory.getBackingFileInternal...
at com.bea.netuix.servlets.controls.content.backing.Jsp-
BackingFileFactory.getBackingFile...
at com.bea.netuix.servlets.controls.Backable$Impl.initialize-
BackingFile(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。
- 更新门户库,看看这样是否能修复该问题
(DRE:使用源代码浏览器在堆栈跟踪中所见行号处查找类实例化。)
- 更新门户库无法进行:
为了确保门户库已从 WL Workshop 内得到更新,请务必检查文件目录以确保 JAR 文件并非只读。如果使用源码控制而未将文件签出,则可能会出现这种情况。如果从别处复制文件且保持文件属性,也可能会出现这种情况。
解决方法备注:
- 关闭 WL Server,关闭 WL Workshop
- 通过命令提示符或 Windows 资源管理器删除 /.workshop
- 删除 /workshop、/javelin-jar-store 和 /wlw*
(在 Win32 命令提示符处键入“set”,找到临时目录。在 UNIX 上,它通常为 /var/tmp)- 扫描 /META-INF 和 //WEB-INF/lib,查找可能为只读的 jar 文件。必要时,使用源码控制将文件签出
- 打开 WL Workshop 和您的应用程序。右键单击该应用程序 -> Install -> Update Portal Libraries
- 检查文件日期和“表明”条目以获得正确的 Service Pack 信息
- 补丁消失:
WLP 补丁经常重叠。例如,假设您安装了 CR123456(仅为举例)而且它运行完全正常。然后,您在与另一问题的支持人员配合工作时发现自己需要 CR134567。这两个补丁都包含一份 netuix_servlet.jar。安装第二个补丁后,通过 CR123456 已解决的问题会再次出现。在此情况下,您需要与支持人员配合工作,以确保他们知道您在获得另一补丁之前都在运行哪些补丁。这样做的目的是确保这些补丁相互兼容。
(DRE:请与客户共同确定先前的补丁,然后查看每个 CR 的注释,以了解是否有补丁必须进行滚动升级。若如此,CCE 便需要照办。)
- 补丁在另一应用程序中不起作用:
如果收到补丁后只将其放在了正在使用的应用程序中,则需要确保将该补丁也放在安装目录中。例如,如果某一补丁包含 netuix_servlet.jar,请在以下位置放置一份:
BEA_HOME_DIR\weblogic81\portal\lib\netuix\web\netuix_servlet.jar
|
如果发生这种情况,您需要将其手动复制到新的应用程序,因为它在创建时会自动复制到每一个新的 Web 应用程序中。
其它备注
- 有可能存在这种情况:您所使用的补丁并未加入到您要升级到的下一 Service Pack 中。请与支持人员进行核对,因为您可能会再次需要为当前 Service Pack 所建立的同一补丁。留意所运行的补丁并在升级时将其通知支持人员,这种做法始终是可取的。
- 使用 Portal Consistency Checker 工具。这是一个通用工具,可以用来对比该 Service Pack 的基础安装检查应用程序中的所有 JAR 文件。只有已知具有补丁的 JAR 才应存在差异。
Portal Consistency Checker (在 8.1 上也完全能工作)
- 手动检查一致性的一种方式是使用 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>
|
-
使用 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
|
-
升级之前应该全文阅读 Release Notes、Upgrade Guides 和 Supported Configurations。对数据库所做的任何更改、其它配置更改以及行为差异都将在此详陈。
Portal Release Notes (English) Portal Upgrade Guide (English) Supported Configurations (English)
|