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

时间:2010-10-19 08:06:39

标签: java hibernate tomcat transactions jta

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用像EHCache这样的事务性缓存,而不是实现XAResource,因为它可以作为XA资源并与其他XA资源一起参与XA事务。