You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Fyodor Kravchenko <fe...@hotmail.com> on 2023/06/27 13:43:51 UTC
Jetty HttpServletResponse sendRedirect
Hello,
one of my producers runs a custom script that is allowed to get access
to the HttpServletRequest and to invoke sendRedirect method on it. It
used to work on Camel 2 but with Camel 3.20.4 Jetty tells this:
16:19:38.178 [qtp987805552-43] ERROR
o.a.camel.component.jetty.CamelContinuationServlet - Error processing
request
org.eclipse.jetty.io.EofException: Closed
at
org.eclipse.jetty.server.HttpOutput.checkWritable(HttpOutput.java:771)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:795)
at org.apache.camel.util.IOHelper.copy(IOHelper.java:206)
at org.apache.camel.util.IOHelper.copy(IOHelper.java:161)
at
org.apache.camel.http.common.DefaultHttpBinding.copyStream(DefaultHttpBinding.java:500)
at
org.apache.camel.http.common.DefaultHttpBinding.doWriteDirectResponse(DefaultHttpBinding.java:566)
at
org.apache.camel.http.common.DefaultHttpBinding.doWriteResponse(DefaultHttpBinding.java:439)
at
org.apache.camel.http.common.DefaultHttpBinding.writeResponse(DefaultHttpBinding.java:362)
A quick look at the DefaultHttpBinding.writeResponse shows it doesn't
check for HttpServletRequest.isCommitted(), only for the body to be blanc.
Is there any solution to allow users to send redirects in their scripts
in the processors? Couldn't find a dedicated Camel HttpMessage method
for that.
--fedd
Re: Jetty HttpServletResponse sendRedirect
Posted by Claus Ibsen <cl...@gmail.com>.
Hi
You can try with setting a Camel header with the Exchange.HTTP_STATUS_CODE
to the 3xx value for redirect, and another header with the location (using
the standard name for that).
And then an empty body.
On Tue, Jun 27, 2023 at 3:44 PM Fyodor Kravchenko <fe...@hotmail.com>
wrote:
> Hello,
>
> one of my producers runs a custom script that is allowed to get access
> to the HttpServletRequest and to invoke sendRedirect method on it. It
> used to work on Camel 2 but with Camel 3.20.4 Jetty tells this:
>
> 16:19:38.178 [qtp987805552-43] ERROR
> o.a.camel.component.jetty.CamelContinuationServlet - Error processing
> request
> org.eclipse.jetty.io.EofException: Closed
> at
> org.eclipse.jetty.server.HttpOutput.checkWritable(HttpOutput.java:771)
> at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:795)
> at org.apache.camel.util.IOHelper.copy(IOHelper.java:206)
> at org.apache.camel.util.IOHelper.copy(IOHelper.java:161)
> at
>
> org.apache.camel.http.common.DefaultHttpBinding.copyStream(DefaultHttpBinding.java:500)
> at
>
> org.apache.camel.http.common.DefaultHttpBinding.doWriteDirectResponse(DefaultHttpBinding.java:566)
> at
>
> org.apache.camel.http.common.DefaultHttpBinding.doWriteResponse(DefaultHttpBinding.java:439)
> at
>
> org.apache.camel.http.common.DefaultHttpBinding.writeResponse(DefaultHttpBinding.java:362)
>
> A quick look at the DefaultHttpBinding.writeResponse shows it doesn't
> check for HttpServletRequest.isCommitted(), only for the body to be blanc.
>
> Is there any solution to allow users to send redirects in their scripts
> in the processors? Couldn't find a dedicated Camel HttpMessage method
> for that.
>
> --fedd
>
>
--
Claus Ibsen
-----------------
@davsclaus
Camel in Action 2: https://www.manning.com/ibsen2