我的应用程序没有运行带有ejb的weblogic,而WLS提供了JTA。现在我尝试使用spring而不是ejb来调整所有应用程序在tomcat中工作。也将使用spring提供的JPATransactionManager,而不是JTA。
我曾经使用TransactionSynchronizationRegistry.getTransactionKey()
来获取tx对象并将其用于缓存目的。现在我正在适应春天,我有TransactionSynchronizationManager
的春天,在那里我无法找到这样的API。
我的问题是 - 你知道春天有TransactionSynchronizationRegistry.getTransactionKey()
的模拟吗?
或者我可以在哪里获得一些有关交易信息的独特对象?
答案 0 :(得分:0)
问题通过使用一些生成的逻辑事务ID解决。通过调用 export default class MovieList extends Component {
componentDidMount(){
this.hello = new Sound('whoosh.mp3', Sound.MAIN_BUNDLE, (error) => {
if (error) {
console.log('failed to load the sound', error);
return;
}
});
}
handlePress() {
this.hello.play((success) => {
if (!success) {
console.log('Sound did not play')
}
})
}
render() {
const { movie } = this.props
return (
<TouchableOpacity onPress={this.handlePress.bind(this)}>
<View>
<Text>Start</Text>
</View>
</TouchableOpacity>
)
}
}
存储此事务ID,并由TransactionSynchronizationManager.bindResource(key, value)
检索。
但是,如果发生事务交错,它将无法正常工作。
假定上游事务A挂起而下游事务B正在运行时,您具有事务交织的流程。
如果在两次交易中您尝试使用如上所述的某些密钥存储交易ID,则可能会出现资源混合的问题。
在这种情况下,建议使用 ResourceHolderSupport ,它负责侦听各种事务状态并绑定或取消绑定资源。
在我们的例子中,假设tx1是存储 resource =“ txID”,“ 123456”,并且由于开始运行tx2而暂停了tx1,资源持有者将取消绑定资源当tx1恢复时,它将再次绑定它。