Hi
I just committed a quick fix for it.
http://svn.apache.org/viewvc?rev=918453&view=rev
Willem
Claus Ibsen wrote:
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote:
On Tue, Mar 2, 2010 at 4:25 PM, Leen Toelen <[email protected]> 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