为什么我在Apache Karaf 4.0.4中获得“不是NamedXAResource”?

时间:2016-01-27 13:18:38

标签: java osgi apache-karaf xa

1 个答案:

答案 0 :(得分:9)

我找到答案并在此发布,以便让其他人更快地解决同样的问题。我花了很长时间和Guillaume的一些帮助来解决这个问题。

Aries事务管理器包内的Apache Karaf中使用的geronimo事务管理器可以恢复事务。默认情况下,此功能在较旧的karaf版本中关闭。在Apache Karaf 4.0.4中,这已经发生了变化。

config etc / org.apache.aries.transaction.cfg包含此设置

aries.transaction.recoverable = true

它激活恢复支持。这样做的缺点是所有jdbc和jms Connections必须实现NamedXAResource。这超出了标准,因此大多数jdbc和jms提供程序都不支持此功能。

ActiveMQ的解决方案是使用JCAPoolingConnectionFactory。对于jdbc,您可以使用aries事务jdbc包装XADataSource。它提供了一个支持恢复的池化支持。

如果您对应用程序的工作方式感到满意,只需将上述开关设置为false即可。然后,交易将像旧的Apache Karaf版本一样工作。