我有一个网络应用程序,我在Tomcat 6上部署并使用Hibernate。
它在JMS队列上接收消息,这些消息触发我的数据库,通过Hibernate和我的对象(Agent
)的更改。
Web请求还通过Hibernate访问数据库,并访问共享对象(由单例持有ConcurrentHashMap<AgentId,Agent>
)。
我的问题是我有一条JMS消息,它改变了几个不同的Agent
和几个表,当且仅当数据库事务成功完成时,我才需要Agent
中的更改可用。另外我不想使用读锁,因为这对我来说太危险了。
我在考虑以某种方式为我的单例实现XAResource
接口,然后使用JTA来管理我的单例和我的Hibernate事务。
你怎么看?听起来合理吗?我离开了吗?
如果需要任何其他详细信息,请随时询问 以太
答案 0 :(得分:3)
您可以使用像EHCache这样的事务性缓存,而不是实现XAResource
,因为它可以作为XA资源并与其他XA资源一起参与XA事务。