访问意向故障诊断技巧

对涉及访问意向的下列常见问题进行了回答。

当未应用访问策略时,Oracle 数据库运行失败。

未应用访问意图策略而且应用程序运行 DB2 数据库,但运行 Oracle 数据库时失败,伴随以下消息:com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException: PMGR1001E: No such DataAccessSpec :FindAllCustomers.The backend datastore does not support the SQLStatement needed by this AccessIntent: (pessimistic update-weakestLockAtLoad)(collections: transaction/25) (resource manager prefetch: 0) (AccessIntentImpl@d23690a).

如果未配置访问意向,您的所有数据在缺省访问意向策略 (wsPessimisticUpdate-WeakestLockAtLoad) 下被访问。在 DB2 上,共享最弱的锁定。但是,在 Oracle 数据库上,最弱的锁定是更新锁定;这意味着 SQL 查询必须包含 FOR UPDATE 子句。为避免此问题,请尝试应用支持乐观并发的访问意向策略。

调用 finder 方法在运行时显示 InconsistentAccessIntentException

这会发生在您使用方法级别访问意向策略应用更多地控制如何装入 bean 实例时。此异常表明同一事务中先前已装入实体 bean。当您调用通过应用的访问意向策略 X 返回 bean 实例的 multifinder 方法时,那么会发生这种情况;现在您通过应用的访问意向 Y 调用其 findByPrimaryKey 方法再次尝试装入第二个 bean。两种方法都必须应用相同的访问意向策略。

同样地,如果使用 finder 方法上配置的访问意向策略在事务中装入实体一次,那么您可以调用一个容器管理的关系 (CMR) 的 accessor 方法,此 accessor 方法返回使用实体的缺省访问意向配置装入的实体 bean。

要避免此问题的发生,确保在带有不同的已应用访问意向策略的相同事务内部,您的代码不要装入相同的 bean 两次。除非完全必要,否则使用避免方法级别访问意向。

两个 bean 的受管容器关系中显示 InconsistentAccessIntentException

受管容器关系中有两个 bean。在第一个 bean 上调用 findByPrimaryKey 方法,然后在返回的实例上调用 getBean2 方法和 CMR accessor 方法,显示 InconsistentAccessIntentException。

您或许正在使用预读。当您装入第一个 bean 时,会导致第二个 bean 在应用访问意向策略下被装入到第一个 bean 的 finder 方法。然而,您配置的从第一个 bean 到第二个 bean 的 CMR accessor 方法有不同的访问意向策略。CMR accessor 方法是掩饰中真正的 finder 方法,运行时环境如同您尝试更改已从持久性存储读取的实例的访问意向那样操作。

要避免此问题,驱动所有在预读提示中配置的 bean 作为已应用的预读提示的 bean 使用相同的访问意向策略装入。

与第二个 bean 有一对多关系的 bean 显示错误

当将第二个 bean 的实例添加到第一个 bean 的收集时,与第二个 bean 有一对多关系的 bean 显示 UpdateCannotProceedWithIntegrityException 错误

当将第二个 bean 的实例添加到第一个 bean 的收集时,与第二个 bean 有一对多关系的 bean 显示 UpdateCannotProceedWithIntegrityException 错误。第一个 bean 已应用一个悲观更新意向策略。

第二个 bean 或许有一个已应用的读取意向策略。在您将第二个 bean 添加到第一个 bean 的集合时,不更新第一个 bean 的状态,而是隐含地修改第二个 bean 的状态。第二个 bean 包含第一个 bean 的外键(已修改)。

要避免此问题的发生,在要更改运行时的关系的情况下,确保两个关系结尾有一个已应用的更新意向策略。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_axifaq
文件名:rejb_axifaq.html