我有一个 getStockQuote() 函数,它将从股票市场获取某个符号的当前股票报价。
我的目标是在 JTA 事务中,第一次调用 getStockQuote() 将获取股票报价,但同一事务中的所有后续调用将重用相同的股票报价(例如:它不会尝试获取新报价)。如果不同的事务开始,或者另一个事务同时运行,我希望另一个事务在第一次调用时获取自己的股票报价。
这是为了尽量确保交易内的一致性——以便交易内的所有计算都基于相同的股票价格。
这类似于如何将 JPA 提供程序配置为仅从数据库中获取数据库行一次,并使用缓存的值来后续访问事务中的同一数据库行。
有谁有关于如何实现这一目标的提示吗?
这需要一些测试,但我认为您可以将报价绑定到ThreadLocal http://java.sun.com/javase/6/docs/api/java/lang/ThreadLocal.html并让你的bean实现SessionSynchronization http://java.sun.com/javaee/5/docs/api/javax/ejb/SessionSynchronization.html解除报价的绑定ThreadLocal
在提交事务之后(从而实现一种事务范围的上下文)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)