【发布时间】:2010-07-26 10:28:56
【问题描述】:
如果连接取自 weblogic 中的数据源,我可以在一个事务期间创建多个连接并对其执行提交。 ???请帮忙
【问题讨论】:
标签: java connection weblogic
如果连接取自 weblogic 中的数据源,我可以在一个事务期间创建多个连接并对其执行提交。 ???请帮忙
【问题讨论】:
标签: java connection weblogic
你的意思是来自不同的数据源?
当然可以。这就是 JTA 的用途。
只需确保相关数据源的驱动程序支持 XA。
已编辑 我明白你的意思了。
我开发的应用程序有这样的功能。假设您的请求处理例程有一些基本的流控制或处理程序结构,您总是可以为错误处理部分启动一个新事务,提交该新事务,然后回滚原始事务。
使用 Spring + 声明式事务控制,您需要围绕错误处理例程声明一个事务,并使用 REQUIRES_NEW 传播策略
【讨论】:
根据您想要有效地记录失败的自治事务的注释,您可以使用数据源中的第二个连接并提交该连接,同时回滚原始失败的连接(不需要 XA;您问题中的措辞表明您希望同时提交两个连接);或者,如果您可以在回滚之前使用实际的autonomous transaction 来处理原始连接内的日志记录。这可能更简单、更清晰,特别是如果您的故障确实来自包调用,因为它可以在故障发生时处理,而不是让客户担心。概述:
PROCEDURE log_failure(...)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert ...
commit;
END log_failure;
【讨论】: