一尘不染

如何在我自己的事务中包装对象更改并将其与Hibernate合并到JTA?

tomcat

我有一个Web应用程序,该应用程序部署在Tomcat
6上,并使用Hibernate。它在JMS队列上接收消息,该消息触发通过Hibernate对我的数据库以及对我的Object(Agent)的更改。
Web请求还可以通过Hibernate访问DB,并访问共享对象(ConcurrentHashMap<AgentId,Agent>由单个对象持有)。
我的问题是,我有一条JMS消息,它更改了几个不同的Agents和几个表,Agent并且仅当数据库事务成功完成时,我才需要s中的更改才可用。另外,我不想使用读锁,因为这对我来说是太多的性能危害。
我正在考虑以 某种方式 实施XAResource接口,然后使用JTA来管理我的单例和Hibernate事务。
你怎么看?听起来合理吗?我要走吗?

如果需要任何其他详细信息,请随时询问
Ittai


阅读 215

收藏
2020-06-16

共1个答案

一尘不染

除了实现之外XAResource,您可以使用像EHCache这样的事务缓存,该事务缓存从2.0开始就支持JTA(即,它可以充当XA资源并与其他XA资源一起参与XA事务)。

2020-06-16