У меня есть веб-приложение, которое я развертываю на Tomcat 6, и он использует Hibernate. Он получает сообщения в очереди JMS, которые вызывают изменения как для моей БД, так и для спящего режима и для объекта My (Agent
).
Веб-запросы также получают доступ к БД через Hibernate и к общему общему объекту (есть ConcurrentHashMap<AgentId,Agent>
, поддерживаемый одноточечным).
Моя проблема заключается в том, что у меня есть сообщение JMS, которое меняет несколько разных Agent
s и несколько таблиц, и мне нужно, чтобы изменения в Agent
s были доступны тогда и только тогда, когда транзакция DB завершена успешно. Кроме того, я не хочу использовать блокировки чтения, поскольку это слишком опасно для меня.
Я думал о как-то, используя интерфейс XAResource
для моего синглтона, а затем использовал JTA для управления как моим синглтоном, так и моей транзакцией Hibernate.
Что вы думаете? Звучит ли это разумно? Я в отъезде?Как обернуть изменение объекта в моей собственной транзакции и включить его с Hibernate в JTA?
Если необходимы какие-либо дополнительные подробности, пожалуйста, не стесняйтесь обращаться к нам
Еффей
Вы имеете в виду, что я должен просто поддерживать EHCache вышеупомянутую карту? – Ittai
@Ittai Да, точно. –
У меня есть проблема с производительностью относительно этого решения, которое я опубликовал (http://stackoverflow.com/questions/3967111/how-does-ehcache-implement-its-transactions). Я был бы признателен, если бы смог получить ваш вход. – Ittai