WSO2数据服务事务管理



我正在尝试使用WSO2数据服务和Boxcarring会话来开发事务管理服务。

我观察到在boxcarring中执行Update语句时,行并没有被锁定。我可以使用DB工具访问同一行,甚至可以更改其值。

在我们的例子中,许多应用程序将访问同一行,而这里它没有被锁定。有人能建议我如何将此转化为正确的交易吗。

在查看文档和源代码后,数据服务似乎会在列表中添加请求,当会话结束或提交时,请求会被执行或拒绝。因此,当你开始装箱会话时,它不会锁定一行。请检查文档页面和源代码链接中突出显示的行。

https://github.com/wso2/platform/blob/master/components/data-services/org.wso2.carbon.dataservices.core/src/main/java/org/wso2/carbon/dataservices/core/boxcarring/RequestBox.java

https://github.com/wso2/platform/blob/master/components/data-services/org.wso2.carbon.dataservices.core/src/main/java/org/wso2/carbon/dataservices/core/DSSessionManager.java

还请检查装箱+样品上的第5点

"5.请注意,工资没有增加。原因是之前在装箱模式下提出的请求没有立即执行。它是在装箱会话结束时执行的。"

参考文档.wso2.com/display/DSS321/Boxcarring+Sample

Boxcarring允许将多个数据服务调用发送到服务器端并同时执行。它可以用来确保相关的数据服务调用被完全执行或根本不执行(通过这种方式,它类似于数据库事务)。IMO锁定任何数据库值不是DSS的工作,因为它应该在服务级别上工作。

最新更新