Chr*_*der 9

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

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

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

aries.transaction.recoverable = true
Run Code Online (Sandbox Code Playgroud)

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

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

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