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