problem solved. Thanks Dushan for guidance

regex based on [1]

<filter source="get-property('ERROR_CODE')"
regex="[1|3|4][0-9][0-9][0-9][0-9][0-9]">
<then>
<property name="HTTP_SC" value="400" scope="axis2" />
</then>
</filter>

[1] http://docs.wso2.org/display/ESB460/Error+Handling+and+Error+Codes



On Tue, Feb 11, 2014 at 10:48 AM, Dushan Abeyruwan <dus...@wso2.com> wrote:

> Hi
> You can setup HTTP_SC in axis2 context set 400 (which represents bad
> Request)
>
>
> On Tue, Feb 11, 2014 at 10:42 AM, Krishantha Dinesh 
> <kr...@krishantha.com>wrote:
>
>> Hi Dushan,
>> Thanks for prompt reply.
>> I do agree with you. my concern is http response got which client get on
>> transport headers.
>> pls refer below
>>
>> This is what client get as exception
>>
>> <Response xmlns="http://cd-rhettige/services/paypal_lookupSale";>
>>
>>    <error_code>101503</error_code>
>>
>>    <error_message>Error connecting to the back end</error_message>
>>
>> </Response>
>>
>>
>> ========================================
>> this is the raw content. pls pay your attention for http status code
>>
>> HTTP/1.1 200 OK
>>
>> Authorization: Bearer OQaph7mMZJbvNDJ-8u9ICVm4Q4kkJmNj.w5dQJZ5u8E
>>
>> Host: cd-rhettige:8280
>>
>> Accept-Encoding: gzip,deflate
>>
>> Content-Type: application/json
>>
>> Date: Tue, 11 Feb 2014 05:06:58 GMT
>>
>> Server: WSO2-PassThrough-HTTP
>>
>> Transfer-Encoding: chunked
>>
>> Connection: Keep-Alive
>>
>>
>>
>> {              "error_code":"101503",
>>
>>     "error_message":"Error connecting to the back end"
>>
>>      }
>>
>>
>>
>> On Tue, Feb 11, 2014 at 10:04 AM, Dushan Abeyruwan <dus...@wso2.com>wrote:
>>
>>> Hi,
>>> No its wrong, we shouldn't response with 200 OK for  exceptions. IMO
>>> ideal way as I think, to do this by keep the catalog of connector specific
>>> error code and embedded in the error message and explain those _ _connector
>>> specific error _ _  catalog in documentation more specifically, and
>>>  returning a generic error with status code to client.
>>>
>>> for error catalogs you could refer [1][2]
>>> [1]http://www.twilio.com/docs/errors/reference
>>> [2]
>>> http://www.stormpath.com/blog/spring-mvc-rest-exception-handling-best-practices-part-1
>>> e.g
>>>
>>>
>>>
>>> {
>>>     "status": 404,
>>>    * "code": 40483,*
>>>     "message": "Oops! It looks like that file does not exist.",
>>>     "developerMessage": "File resource for path /uploads/foobar.txt does 
>>> not exist.  Please wait 10 minutes until the upload batch completes before 
>>> checking again.",
>>>     "moreInfo": "http://www.mycompany.com/errors/40483";
>>> }
>>>
>>>
>>>
>>> On Tue, Feb 11, 2014 at 9:51 AM, Krishantha Dinesh <kr...@krishantha.com
>>> > wrote:
>>>
>>>> Hi Dushan/Dev
>>>> I tried ur solution and its work. but i have other question. when it
>>>> catch FAULT (500 error) on return message of client http code is 200 OK
>>>> for example let say endpoint is fail the it catch that fault. but in
>>>> client point of view http respond code of his response is 200
>>>>
>>>> other than 500 client getting correct http response code. the problem
>>>> may be this is originate by ESB it self than come as response to ESB. btw
>>>> is there any solution for this.
>>>>
>>>>
>>>>
>>>> On Sat, Feb 8, 2014 at 7:30 PM, Dushan Abeyruwan <dus...@wso2.com>wrote:
>>>>
>>>>> Hi Kirshantha,
>>>>>   Handling fault has two flavors,
>>>>>
>>>>>    - Handle internal fault such as service EP not available and all
>>>>>    the issues related .
>>>>>    - Handle Service faults.
>>>>>
>>>>>
>>>>>   Ideally when BE is SOAP and if it returns SOAP fault in order to
>>>>> handle such queries we normally append FORCE_ERROR_ON_SOAP_FAULT property,
>>>>> this works only of BE return Service faults and when such happen if we 
>>>>> need
>>>>> to divert such responses to the faultSequence that we have defined.
>>>>>    On the other hand if that is RESTful BE,  we do not have a inbuilt
>>>>> function  to determine whether its a fault at transport level, so the
>>>>> workaround that we normally do is to use the Filter base on the HTTP_SC.
>>>>>   If you look at [1] status codes represents 100 series and 200-
>>>>> series regards as non faulty responses, and other than that we can
>>>>> determine them as faults or defect, to overcome such station when deal 
>>>>> with
>>>>> RESTful services personally I am using filters i.e
>>>>>
>>>>> OutSequence ..etc , below logic just evaluates the response and if
>>>>> that not falls between 200 series normally you can add your customize
>>>>> faulty response logic ..
>>>>>
>>>>>  <filter source="$axis2:HTTP_SC" regex="^[^2][0-9][0-9]">
>>>>>             <then>
>>>>>                <log level="custom">
>>>>>
>>>>>    - can include payload
>>>>>       - can setup HTTP_SC to axis2 context
>>>>>       - can use <respond> mediator to reply client with error.
>>>>>
>>>>>                  ..............
>>>>>                  ..............
>>>>>
>>>>>             </then>
>>>>>          </filter>
>>>>>
>>>>>
>>>>> [1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Feb 7, 2014 at 7:54 PM, Krishantha Dinesh <
>>>>> kr...@krishantha.com> wrote:
>>>>>
>>>>>> I have used following code to handle error on soap call
>>>>>>
>>>>>> proxy
>>>>>> ==============
>>>>>>
>>>>>> <faultSequence>
>>>>>>             <makefault version="soap11">
>>>>>>                 <code xmlns:tns="
>>>>>> http://www.w3.org/2003/05/soap-envelope";
>>>>>>                     value="get-property('FAULT_CODE')" />
>>>>>>                 <reason expression="get-property('ERROR_CODE')" />
>>>>>>                 <detail expression="get-property('ERROR_MESSAGE')" />
>>>>>>             </makefault>
>>>>>>             <send />
>>>>>>         </faultSequence>
>>>>>>
>>>>>> Output
>>>>>> ==============
>>>>>> <soapenv:Envelope xmlns:soapenv="
>>>>>> http://schemas.xmlsoap.org/soap/envelope/";>
>>>>>>    <soapenv:Body>
>>>>>>       <soapenv:Fault>
>>>>>>          <faultcode xmlns:tns="
>>>>>> http://www.w3.org/2003/05/soap-envelope";>123456</faultcode>
>>>>>>          <faultstring>abc</faultstring>
>>>>>>          <detail>xyz</detail>
>>>>>>       </soapenv:Fault>
>>>>>>    </soapenv:Body>
>>>>>> </soapenv:Envelope>
>>>>>>
>>>>>>
>>>>>> I need to know what is the best approach to handle exception on REST
>>>>>> calls.
>>>>>>
>>>>>> i tried to apply same way just for try but it only give ERROR_MESSAGE
>>>>>> not another...
>>>>>>
>>>>>> my expectation is to deliver all exception to client (caller). eg:
>>>>>> transport error due to unavailable endpoint.. etc
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> Dev@wso2.org
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dushan Abeyruwan | Associate Tech Lead
>>>>>  Integration Technologies Team
>>>>> PMC Member Apache Synpase
>>>>> WSO2 Inc. http://wso2.com/
>>>>> Blog:http://dushansview.blogspot.com/
>>>>> Mobile:(0094)713942042
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Dushan Abeyruwan | Associate Tech Lead
>>> Integration Technologies Team
>>> PMC Member Apache Synpase
>>> WSO2 Inc. http://wso2.com/
>>> Blog:http://dushansview.blogspot.com/
>>> Mobile:(0094)713942042
>>>
>>>
>>
>
>
> --
> Dushan Abeyruwan | Associate Tech Lead
> Integration Technologies Team
> PMC Member Apache Synpase
> WSO2 Inc. http://wso2.com/
> Blog:http://dushansview.blogspot.com/
> Mobile:(0094)713942042
>
>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to