Как я могу прикрепить данные к транзакции JTA? (или однозначно идентифицировать его) - PullRequest
4 голосов
/ 18 мая 2010

У меня есть функция getStockQuote (), которая будет получать текущую котировку акций для символа с фондового рынка.

Моя цель заключается в том, чтобы в транзакции JTA первый вызов getStockQuote () извлек котировку акций, но все последующие звонки в рамках одной транзакции будут повторно использовать одну и ту же биржевую котировку (например, он не будет пытаться получить новую биржу). цитата). Если другая транзакция начинается или другая транзакция выполняется одновременно, я ожидаю, что другая транзакция получит свою собственную котировку акций при первом вызове.

Это делается для того, чтобы обеспечить согласованность транзакции, чтобы все расчеты внутри транзакции основывались на одной и той же цене акций.

Это будет похоже на то, как вы можете настроить JPA-провайдеров так, чтобы они извлекали строку базы данных из базы данных только один раз и использовали кэшированное значение для последующего доступа к той же строке базы данных в транзакции.

У кого-нибудь есть советы, как этого можно достичь?

Ответы [ 2 ]

0 голосов
/ 18 мая 2010

рассмотрите возможность использования пружины для управления транзакциями, она предоставляет эту функциональность из коробки:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#tx-propagation

0 голосов
/ 18 мая 2010

Это потребует некоторого тестирования, но я думаю, что вы могли бы связать цитату с ThreadLocal и заставить ваши бины реализовать SessionSynchronization, чтобы открепить цитату из ThreadLocal после фиксации транзакции (и, следовательно, реализации своего рода контекста в области транзакции).

...