我们如何处理WSO2DSS错误?

时间:2013-03-12 05:35:52

标签: wso2 wso2esb 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"}

1 个答案:

答案 0 :(得分:2)

所以在这里,当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

干杯, 长香。