camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brad Johnson <>
Subject Re: Multiple consumers for the same endpoint is not allowed cxfrs vs rest dsl
Date Wed, 10 Feb 2016 22:09:40 GMT
Using recipientList with header.operationName instead of
header.CamelHttpMethod will let you set the route to a name that matches
the method invoked on your interface.

    public InvoicePDF getInvoice(
            @WebParam(name = "foo", targetNamespace = "")
            @PathParam("fooId") String invoiceId);
    public FooReturn processFoo(
            @WebParam(name = "foo", targetNamespace = "")
            @PathParam("invoiceId") String foo);


Will route the incoming message to the direct-vm:processFoo.   At that
point it doesn't matter what the HTTP method invocation was as it isn't
using that information to determine the route to invoke. Obviously I have
this tagged for both REST and SOAP which isn't entirely of interest to you.

On Wed, Feb 10, 2016 at 3:51 PM, camel_case <>

> performInvocation allows you to use the resource file to match http method
> type (GET POST PUT DELETE) to a method in the resource file.  However, it
> wipes out the Exchange headers and body, and the return value is set to the
> Exchange.In body, except when null is returned.  There doesn't seem to be a
> way to access the exchange, In or Out, headers or body, get or set, inside
> the resource method.  One does have access to @PathParam or @QueryParam
> that
> appear in the method signature params which could then be set in the body,
> are returned to the route, passed in the Exchange.  The method can call a
> service and return values to the calling route in the inBody.
> Alternatively, one can direct the cxfrs routes according to http method by
> using recipient list as in
>  .recipientList(simple("direct:${header.CamelHttpMethod}"));
> In either case, one could then use the same target url ( as in
> and the route finds the
> service restfully according to the http method.
> With the recipientList trick, the routes are set up with endpoints start
> direct:GET direct:POST direct:PUT direct:DELETE
> With peformInvocation, each resource method can call an appropriate
> service.
> Furthermore, two identical url requests distinguished only by use of
> pathParam vs. queryParam or even the name of the param, can be routed, with
> a further refinement of recipientList trick or if statement in resource
> method, or .choice( in route.
> This routing style is actually built in to the rest dsl as in rest(url).get
> etc.
> It is difficult to find debate over cxfrs vs rest dsl (avail only since
> Fall
> 2015)
> --
> View this message in context:
> Sent from the Camel - Users mailing list archive at

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message