Я экспериментирую с компонентом WSO2 DataService с MySQL в качестве базы данных. Я представил базу данных MySQL как службу с помощью компонента WSO2 и смог использовать WSDL для генерации кода Java.
Используя клиент Java CXF, я могу подключиться к базе данных и выполнить операции CRUD. Сейчас меня больше всего беспокоит то, как компонент WSO2 DSS обрабатывает грязные данные. Для проверки сценария у меня есть следующий код:
public class TestService{
//Code to connect to service
private void callInsertOperation(HermesCompleteServicePortType port) {
((BindingProvider) port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
port.beginBoxcar();
port.insertOperation("Key1", "TestData", Double.valueOf(0.00));
try {
port.endBoxcar(null);
} catch (DataServiceFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Insert completed");
}
private void callUpdateOperation(HermesCompleteServicePortType port) {
((BindingProvider) port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
port.beginBoxcar();
port.updateOperation("Key2", "TestData1", Double.valueOf(10.00));
try {
port.endBoxcar(null);
} catch (DataServiceFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Update completed");
}
}
Проблема заключается в операции обновления, когда выполняются следующие условия:
- Обновление несуществующего ключа, т. е. Key2 отсутствует
- Обновление старых данных, т. е. ключ существует, но данные устарели.
В этих двух случаях я бы предположил, что DataService указывает, что операция обновления не удалась/вызвала исключение/не повлияла ни на какие строки. Но это не дает никаких указаний, и я также проверил журналы wso2, чтобы увидеть, было ли какое-либо сообщение/исключение, связанное с этим, но ничего не появилось.
И, очевидно, таблица db остается неизменной после операции обновления.
Как WSO2 DSS обрабатывает эти сценарии? Как клиент узнает, если операция обновления не удалась? Я что-то упустил в коде?
EDIT Я не хочу использовать хранимые процедуры для проверки количества строк результатов, как указано здесь