【问题标题】:Atomikos or JBossTS without JDBC没有 JDBC 的 Atomikos 或 JBossTS
【发布时间】:2011-10-20 15:39:51
【问题描述】:

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

已编辑

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

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

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

【问题讨论】:

    标签: java tomcat jboss atomikos


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,但是与数据的连接——对不同数据源(文件、数据库)的读写操作不在我的工作范围内,那是插件管理器的工作。我的是看我是否需要更新(缓存的)变量 - 并以事务方式执行(和读/写)。
    • 文件自然不是事务性的。要在事务中读取或写入它们,您需要 xdisk 或 JBoss 事务文件 (stackoverflow.com/questions/892349/…)
    • RAM 也不是事务性的,STM 解决方案除外。因此,您需要一些事务缓存来保存变量。试试 infinispan - 它是一个缓存/数据网格,可以充当 XA 资源管理器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多