搜索

11.7.4. Jakarta Transactions 事务错误处理

download PDF

11.7.4.1. 处理事务错误

事务错误很难解决,因为它们通常依赖于时间。以下是排除错误的一些常见错误和观点:

注意

这些规则不适用于启发性错误。如果您遇到启发性错误,请参阅在交易中处理 Heuristic Outcome,并联系红帽全球支持服务以获得帮助。

事务超时,但业务逻辑线程未注意到

当 Hibernate 无法获取用于延迟加载的数据库连接时,这种类型的错误通常会列出自身。如果频繁发生,您可以延长超时值。有关配置事务管理器的详情,请查看 JBoss EAP 配置指南

如果这不可行,您或许能够调整外部环境以更快地执行,或者将代码重组为更高效。如果您遇到超时问题,请联系红帽全球支持服务。

事务已在线程上运行,或者您收到 NotSupportedException 异常

NotSupportedException 异常 通常表示您试图嵌套 Jakarta Transactions 事务,且不受支持。如果您没有尝试嵌套事务,则可能会在线程池任务中启动另一个事务,但无需暂停或终止事务即可完成任务。

应用通常使用 UserTransaction,后者自动处理此问题。如果是这样,则框架可能存在问题。

如果您的代码确实 直接使用 事务 管理器 或交易方法,请注意提交或回滚事务时的以下行为:如果您的代码使用 TransactionManager 方法来控制您的事务,则提交或回滚事务会从当前线程中解除事务关联。但是,如果您的代码使用 事务 方法,则事务可能不会与正在运行的线程关联,而且您需要手动将其从线程中取消关联,然后再将其返回到线程池。

您无法获取第二个本地资源
如果您尝试将第二个非 XA 资源放入事务中,则会出现这个错误。如果您在事务中需要多个资源,则必须是 XA。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.