You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by satyavrat <bi...@gmail.com> on 2015/11/23 14:41:12 UTC

https://issues.apache.org/jira/browse/CAMEL-4871 : not fixed in camel jetty

Hi,
I am using camel jetty as proxy server.
Its working with most of my services but with tracmore its giving problem.

After some investigation I found that issue
https://issues.apache.org/jira/browse/CAMEL-4871 is not considered in jetty
component.

Can you please help me how I can resolve it ?

Also how I can avoid its from reading body of message , It should just
forward it to next jetty.

I am using below:



*Code is like:*from("jetty:http://0.0.0.0:8080/?continuationTimeout=" +
responseTimeOut + "&httpClient.idleTimeout=" + responseTimeOut
                        + "&httpClient.timeout=" + responseTimeOut +
"&matchOnUriPrefix=true")
.to("jetty:" + destinationUrl + "?continuationTimeout=" + responseTimeOut +
"&httpClient.idleTimeout=" + responseTimeOut
                + "&httpClient.timeout=" + responseTimeOut
                +
"&bridgeEndpoint=true&enableMultipartFilter=false&useContinuation=true&enableCORS=true&"
+ "throwExceptionOnFailure=false")



*POM:*<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>2.15.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-jetty</artifactId>
            <version>2.15.2</version>
        </dependency>



*Reason:*
My message body is below :

&c1=admin&c2=admin&c3=Login&Qform__FormId=LoginForm&Qform__FormState......

Its starting with & , and when its executing below lines its throwing
exception from class DefaultHttpBinding:

for (String param : body.split("&")) {
                    String[] pair = param.split("=", 2);
                    *if (pair.length == 2) {*

*Exception :*

WARN  2015-11-16 17:22:03,272 [qtp539480478-23 -
/tracmor/login.php][ServletHandler.java:554] : /tracmor/login.php
org.apache.camel.RuntimeCamelException: Cannot read request parameters due
Invalid parameter, expected to be a pair but was
        at
org.apache.camel.component.http.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:111)
        at
org.apache.camel.component.http.HttpMessage.<init>(HttpMessage.java:52)
        at
org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:126)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
        at
org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:136)
        at
org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
        at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
        at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
        at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
        at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:366)
        at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
        at
org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
        at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
        at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
        at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Invalid parameter, expected
to be a pair but was
        at
*org.apache.camel.component.http.DefaultHttpBinding.populateRequestParameters(DefaultHttpBinding.java:196)
at
org.apache.camel.component.http.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:109)*
        ... 26 more

Thank you in advance.
-
Satyavrat

Re: https://issues.apache.org/jira/browse/CAMEL-4871 : not fixed in camel jetty

Posted by satyavrat <bi...@gmail.com>.
Hi all,

Please help.
On 23-Nov-2015 7:11 pm, "satyavrat" <bi...@gmail.com> wrote:

> Hi,
> I am using camel jetty as proxy server.
> Its working with most of my services but with tracmore its giving problem.
>
> After some investigation I found that issue
> https://issues.apache.org/jira/browse/CAMEL-4871 is not considered in
> jetty component.
>
> Can you please help me how I can resolve it ?
>
> Also how I can avoid its from reading body of message , It should just
> forward it to next jetty.
>
> I am using below:
>
>
>
> *Code is like:*from("jetty:http://0.0.0.0:8080/?continuationTimeout=" +
> responseTimeOut + "&httpClient.idleTimeout=" + responseTimeOut
>                         + "&httpClient.timeout=" + responseTimeOut +
> "&matchOnUriPrefix=true")
> .to("jetty:" + destinationUrl + "?continuationTimeout=" + responseTimeOut
> + "&httpClient.idleTimeout=" + responseTimeOut
>                 + "&httpClient.timeout=" + responseTimeOut
>                 +
> "&bridgeEndpoint=true&enableMultipartFilter=false&useContinuation=true&enableCORS=true&"
> + "throwExceptionOnFailure=false")
>
>
>
> *POM:*<dependency>
>             <groupId>org.apache.camel</groupId>
>             <artifactId>camel-core</artifactId>
>             <version>2.15.2</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.camel</groupId>
>             <artifactId>camel-jetty</artifactId>
>             <version>2.15.2</version>
>         </dependency>
>
>
>
> *Reason:*
> My message body is below :
>
> &c1=admin&c2=admin&c3=Login&Qform__FormId=LoginForm&Qform__FormState......
>
> Its starting with & , and when its executing below lines its throwing
> exception from class DefaultHttpBinding:
>
> for (String param : body.split("&")) {
>                     String[] pair = param.split("=", 2);
>                     *if (pair.length == 2) {*
>
> *Exception :*
>
> WARN  2015-11-16 17:22:03,272 [qtp539480478-23 -
> /tracmor/login.php][ServletHandler.java:554] : /tracmor/login.php
> org.apache.camel.RuntimeCamelException: Cannot read request parameters due
> Invalid parameter, expected to be a pair but was
>         at
> org.apache.camel.component.http.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:111)
>         at
> org.apache.camel.component.http.HttpMessage.<init>(HttpMessage.java:52)
>         at
> org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:126)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
>         at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
>         at
> org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:136)
>         at
> org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>         at org.eclipse.jetty.server.Server.handle(Server.java:366)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
>         at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
>         at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.IllegalArgumentException: Invalid parameter, expected
> to be a pair but was
>         at
> *org.apache.camel.component.http.DefaultHttpBinding.populateRequestParameters(DefaultHttpBinding.java:196)
> at
> org.apache.camel.component.http.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:109)*
>         ... 26 more
>
> Thank you in advance.
> -
> Satyavrat
>