Hi

Here is the JIRA ticket
https://issues.apache.org/activemq/browse/CAMEL-2519

On Wed, Mar 3, 2010 at 9:25 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> Hi
>
> The custom binding is a good solution IMHO since you got a fair amount
> of logic to return different error codes.
>
> But you can also check out this user thread about custom error codes
> http://old.nabble.com/Default-error-handler%2C-changing-HTTP-response-code-ts27721146.html
>
> And maybe we should support setting a custom
> Exchange.HTTP_RESPONSE_CODE code to be used for exceptions as well.
> Let me create a JIRA for that.
>
>
> On Wed, Mar 3, 2010 at 9:08 AM, Leen Toelen <toe...@gmail.com> wrote:
>> Hi,
>>
>> I had to use a custom httpBinding, since the DefaultHttpBinding
>> doWriteExceptionResponse always writes error code 500. I had to change
>> this because I wanted to have distinct error code depending on what
>> exactly went wrong. If the XSD validating fails, I return a 400 Bad
>> Request, when the queue is full I return a 504 Gateway timeout. The
>> client can than handle the response in different ways if he wants.
>>
>> Is it intentionally that 500 is always returned by default or is there
>> a different way to specify the error code? I tried using the
>> Exchange.HTTP_RESPONSE_CODE header but this does only work for
>> non-exception cases.
>>
>>       �...@override
>>        public void doWriteExceptionResponse(Throwable exception,
>>                        HttpServletResponse response) throws IOException {
>>                int errorCode = 500;
>>                if (exception instanceof ValidationException) {
>>                        errorCode = HttpServletResponse.SC_BAD_REQUEST;
>>                } else if (exception instanceof 
>> org.apache.camel.ExchangeTimedOutException) {
>>                        errorCode = HttpServletResponse.SC_GATEWAY_TIMEOUT;
>>                } else if (exception instanceof RollbackExchangeException) {
>>                        errorCode = 
>> HttpServletResponse.SC_SERVICE_UNAVAILABLE;
>>                } else {
>>                        errorCode = 
>> HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
>>                }
>>                response.setStatus(errorCode); // 500 for internal server 
>> error
>>                response.setContentType("text/plain");
>>
>>                // append the stacktrace as response
>>                PrintWriter pw = response.getWriter();
>>                exception.printStackTrace(pw);
>>
>>                pw.flush();
>>        }
>>
>> Regards,
>> Leen
>>
>> On Tue, Mar 2, 2010 at 4:46 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>>> On Tue, Mar 2, 2010 at 4:25 PM, Leen Toelen <toe...@gmail.com> wrote:
>>>> Hi,
>>>>
>>>> I am trying to run this route:
>>>>
>>>>                <route id="RestToTopic">
>>>>                        <from 
>>>> uri="jetty:http://0.0.0.0:8162/meucci/assembly"; />
>>>>                        <doTry>
>>>>                                <to uri="xslt:XSLT.xml" />
>>>>                                <to uri="validator:XSD.xsd" />
>>>>                                <inOnly uri="activemq:topic:Topic" />
>>>>                                <setBody><constant></constant></setBody> 
>>>> <!-- Return empty body when OK -->
>>>>                                <doCatch>
>>>>                                
>>>> <exception>org.apache.camel.ValidationException</exception>
>>>>                                        
>>>> <handled><constant>false</constant></handled>
>>>>                                        <!-- TODO: Return exception message 
>>>> on ValidationException -->
>>>>                            </doCatch>
>>>>                        </doTry>
>>>>                </route>
>>>>
>>>> but I would like to get the validation exception message as the result
>>>> body. Is this possible?
>>>>
>>>
>>> Yeah from the simple language etc.
>>> http://camel.apache.org/simple.html
>>>
>>> <setBody><simple>${exception.message}</simple></setBody>
>>>
>>>> Regards,
>>>> Leen
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to