1

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

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

4

1 回答 1

3

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

于 2010-10-19T08:56:15.220 回答