我有一个Web应用程序,该应用程序部署在Tomcat 6上,并使用Hibernate。它在JMS队列上接收消息,该消息触发通过Hibernate对我的数据库以及对我的Object(Agent)的更改。 Web请求还可以通过Hibernate访问DB,并访问共享对象(ConcurrentHashMap<AgentId,Agent>由单个对象持有)。 我的问题是,我有一条JMS消息,它更改了几个不同的Agents和几个表,Agent并且仅当数据库事务成功完成时,我才需要s中的更改才可用。另外,我不想使用读锁,因为这对我来说是太多的性能危害。 我正在考虑以 某种方式 实施XAResource接口,然后使用JTA来管理我的单例和Hibernate事务。 你怎么看?听起来合理吗?我要走吗?
Agent
ConcurrentHashMap<AgentId,Agent>
XAResource
如果需要任何其他详细信息,请随时询问 Ittai
除了实现之外XAResource,您可以使用像EHCache这样的事务缓存,该事务缓存从2.0开始就支持JTA(即,它可以充当XA资源并与其他XA资源一起参与XA事务)。