Как мы можем обрабатывать ошибки WSO2DSS?

Мы можем обрабатывать ошибки в WSO2ESb, используя последовательность ошибок и ее обработку на уровне ESB, только так же, как мы можем обрабатывать ошибки уровня DSS, такие как нарушение первичного ключа, неправильный входной параметр.

У нас есть отдельный обработчик ошибок для уровня WSO2DSS, иначе мы можем обрабатывать только уровень WSO2ESB.

Я пытаюсь на стороне ESB, но не могу справиться с этим из-за последовательности ошибок.

Это ошибка уровня DSS, как я могу с этим справиться:

 ERROR {org.wso2.carbon.dataservices.core.description.query.SQLQuery} -  ERROR: duplicate key value violates unique constraint "emp_pkey"
  Detail: Key (eno)=(9) already exists.
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "emp_pkey"
  Detail: Key (eno)=(9) already exists.


[2013-03-12 10:45:44,914] ERROR {org.wso2.carbon.dataservices.core.DBInOnlyMessageReceiver} -  Error in in-only message receiver
DS Fault Message: Error in DS non result invoke.
DS Code: DATABASE_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: dept_DataService
Location: /dept_DataService.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: insert_dept_operation
Current Params: {deptid=7, deptno=, deptname=hr}
Nested Exception:-
java.lang.NumberFormatException: For input string: ""

ESb напрямую отправляет сообщение клиенту.

Сообщение:

{"Exception":"DS Fault Message: Error in DS non result invoke.\nDS Code: DATABASE_ERROR\nNested Exception:-\njavax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'\nDS Code: DATABASE_ERROR\nSource Data Service:-\nName: dept_DataService\nLocation: \/dept_DataService.dbs\nDescription: N\/A\nDefault Namespace: http:\/\/ws.wso2.org\/dataservice\nCurrent Request Name: insert_dept_operation\nCurrent Params: {deptid=7, deptno=, deptname=hr}\nNested Exception:-\njava.lang.NumberFormatException: For input string: \"\"\n\n"}

person Faisal    schedule 12.03.2013    source источник
comment
это означает ответ на ошибку от отправки DSS клиенту, но я намерен настроить это в Esb в соответствии с моим требованием.   -  person Faisal    schedule 12.03.2013


Ответы (1)


Итак, здесь, когда в DSS возникает ошибка, он отправляет ошибку SOAP пользователю, которым в данном случае является ESB. Для ESB это всего лишь еще один ответ на сообщение, и он не попадет в последовательность ошибок, если только вы явно не проверите сообщение и не выполните необходимые действия. Но с ESB 4.5.0 теперь у вас есть возможность сказать, что если ответ является ошибкой SOAP, выполнение должно переключиться на последовательность ошибок. Подробно это объясняется здесь [1].

[1] http://maharachchi.blogspot.com/2012/09/now-you-can-send-soapfaults-to-fault.html

Здоровья, Анджана.

person Anjana Fernando    schedule 13.03.2013
comment
спасибо за повтор. где я могу сохранить это свойство в каждой последовательности или на начальной стадии последовательности, у меня есть много идей об этом, работает ли это свойство также в последовательности.. означает, что у меня есть две операции вставки: 1-й - уровень непоследовательности, а 2-я вставка - какой-то другой уровень последовательности. 2-я вставка пошла не так, тогда только оценка последовательности ошибок ... где я могу сохранить это свойство в каждой последовательности или на начальной стадии последовательности - person Faisal; 13.03.2013
comment
мой сценарий: я использую 3 таблицы для вставки ... и использую возвращенный сгенерированный ключ для каждой вставки ... моя 1-я вставка выполнена успешно и вернула ключ, используя тот, который я вставляю данные во 2-ю таблицу, но ошибка нарушена во 2-й таблице. я хочу откатить данные 1-й таблицы также... как мы можем это сделать - person Faisal; 13.03.2013