Службы данных Wso2 — проблема с операцией обновления

Я экспериментирую с компонентом 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");
    }

}

Проблема заключается в операции обновления, когда выполняются следующие условия:

  1. Обновление несуществующего ключа, т. е. Key2 отсутствует
  2. Обновление старых данных, т. е. ключ существует, но данные устарели.

В этих двух случаях я бы предположил, что DataService указывает, что операция обновления не удалась/вызвала исключение/не повлияла ни на какие строки. Но это не дает никаких указаний, и я также проверил журналы wso2, чтобы увидеть, было ли какое-либо сообщение/исключение, связанное с этим, но ничего не появилось.

И, очевидно, таблица db остается неизменной после операции обновления.

Как WSO2 DSS обрабатывает эти сценарии? Как клиент узнает, если операция обновления не удалась? Я что-то упустил в коде?

EDIT Я не хочу использовать хранимые процедуры для проверки количества строк результатов, как указано здесь


person aces.    schedule 28.01.2013    source источник


Ответы (1)


По-видимому, в DSS нет такой прямой функции, позволяющей определить, повлияла ли операция обновления на какие-либо строки. Два сценария, которые вы указали, не вызывают SQLException. Они будут выполняться как обычные операции обновления, даже если мы запустим командную строку mysql (базы данных). Но он покажет результат как затронутые строки = 0. С текущей реализацией DSS мы не возвращаем сообщение об ошибке клиенту, за исключением того, что выполнение не достигает успеха, что здесь не так.

Мы добавим это как новую функцию в будущий выпуск DSS, которая будет возвращать «обновленное количество строк» ​​при вызове определенного запроса, такого как INSERT/UPDATE.

person Dinusha    schedule 01.02.2013
comment
Объявлена ​​ли эта функция в DSS_3.0.01? - person Reza Ameri; 28.05.2013