【发布时间】:2016-05-04 11:18:32
【问题描述】:
我有一些transactional code 在旧版本的 Apache Karaf 中运行良好。现在在 Apache Karaf 4.0.4 中,我看到了很多异常。
和
【问题讨论】:
标签: java osgi apache-karaf xa
我有一些transactional code 在旧版本的 Apache Karaf 中运行良好。现在在 Apache Karaf 4.0.4 中,我看到了很多异常。
和
【问题讨论】:
标签: java osgi apache-karaf xa
我找到了答案并将其发布在此处,以便为其他人提供更快的方法来解决相同的问题。我花了很长时间才弄清楚这一点,并得到了 Guillaume 的帮助。
在 Aries 事务管理器包内的 Apache Karaf 中使用的 geronimo 事务管理器可以恢复事务。默认情况下,此功能在较旧的 karaf 版本中已关闭。在 Apache Karaf 4.0.4 中,这种情况发生了变化。
配置 etc/org.apache.aries.transaction.cfg 包含此设置
aries.transaction.recoverable = true
它会激活恢复支持。这样做的缺点是所有 jdbc 和 jms 连接都必须实现 NamedXAResource。这超出了标准,因此大多数 jdbc 和 jms 提供程序不支持。
ActiveMQ 的解决方案是使用 JCAPoolingConnectionFactory。对于 jdbc,您可以使用 aries 事务 jdbc 包装您的 XADataSource。它提供了一个池化支持,也支持恢复。
如果您对应用程序的工作方式感到满意,则可以简单地将上述开关设置回 false。然后,事务将像在旧 Apache Karaf 版本中一样工作。
【讨论】: