Управление транзакциями услуг передачи данных WSO2

Я пытаюсь разработать сервис, используя WSO2 Data Service и используя сеансы Boxcarring для управления транзакциями.

Я заметил, что при выполнении оператора Update в boxcarring строка не блокируется. Я могу получить доступ к той же строке с помощью инструмента БД и даже изменить его значение.

В нашем случае многие приложения будут получать доступ к одной и той же строке, и здесь она не заблокирована. Может кто-нибудь подсказать мне, как превратить это в правильную сделку.

2 ответа

Решение

После просмотра документов и исходного кода кажется, что запрос на добавление службы данных в список, и когда этот сеанс завершен или зафиксирован, запрос выполняется или отклоняется. Таким образом, он не блокирует строку при запуске сеанса boxcarring. Пожалуйста, проверьте выделенную строку со страницы документа и ссылки на исходный код.

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 на Boxcarring+ Образец

"5. Обратите внимание, что заработная плата не увеличивается. Причина в том, что запрос, сделанный ранее в режиме переноса ящика, не выполняется немедленно. Он выполняется, когда заканчивается сеанс переноса ящика".

Ссылка docs.wso2.com/display/DSS321/Boxcarring+Sample

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

Другие вопросы по тегам