1

如果无法通过 JDBC 调用数据源,是否可以实现以前的事务管理器之一?

已编辑

我想为现有应用程序创建一个插件。我的插件将负责记录长期工作流事务的读写访问。我的插件应该另外负责缓存变量以防需要它们 - 这样每次访问变量时都不必进行读/写操作。

该应用程序在 Tomcat6 环境中运行,我通过调用插件管理器(它保存从不同数据源获取数据)来获取数据。

您知道我可以阅读的任何链接 - 或者可能知道一些现有的解决方案吗?

4

1 回答 1

2

听起来您还没有完全掌握事务管理器和资源管理器之间的区别。JBossTS 之类的事务管理器通过 RM 驱动程序提供的 XAResources 驱动 Oracle、MSSQL 等资源管理器。

您没有实现事务管理器——它已经实现了。您正在实现一个新的资源管理器并使用现有的事务管理器来驱动它。阅读 XA 规范,然后实现 XAResource 并将您的资源登记到事务管理器中。只要您的 impl 符合规范,事务管理器就会像使用数据库驱动程序或消息队列提供的实现一样使用它。

请注意,在 ACID 事务范围内对外部(即非事务性)系统进行 I/O 基本上是不可能的。您可以期望的最好结果是某种形式的基于补偿的模型或具有最后资源提交优化的 1PC 行为。

于 2011-10-20T15:50:10.900 回答