У меня есть веб-приложение, которое я развертываю на Tomcat 6, и оно использует Hibernate.
Он получает сообщения в очереди JMS, которые вызывают изменения как в моей БД, через Hibernate, так и в Мой объект (Agent
).
Веб-запросы также обращаются к БД через Hibernate и обращаются к общему объекту (есть ConcurrentHashMap<AgentId,Agent>
, хранящийся в одиночном коде).
Моя проблема в том, что у меня есть сообщение JMS, которое меняет несколько различных Agent
s и несколько таблиц, и мне нужно, чтобы изменения в Agent
s были доступны тогда и только тогда, когда транзакция БД завершена успешно. Кроме того, я не хочу использовать блокировки чтения, поскольку для меня это слишком опасно для производительности.
Я думал о как-то реализации интерфейса XAResource
для моего синглтона, а затем с помощью JTA для управления как моим синглтоном, так и моей транзакцией Hibernate.
Как вы думаете? Это звучит разумно? Я далеко?
Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать
Еффий