Most of the switch over from using XML route builders to Java route builders is fairly painless and straightforward and the new CDI is a pleasure to work with. But there are certain aspects that I'm not quite familiar with like how to do the same thing as this in the Java DSL,
<!-- Defined the client endpoint to create the cxf-rs consumer --> <cxf:rsClient id="rsClient" address="http://localhost: <http://localhost/> ${CXFTestSupport.port2}/CxfRsRouterTest/rest" serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" loggingFeatureEnabled="true" skipFaultLogging="true"> <cxf:providers> <ref bean="jsonProvider"/> </cxf:providers> </cxf:rsClient> <!-- The camel route context --> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <!-- Just need to ignoreDeleteMethodMessageBody --> <from uri="cxfrs://bean://rsServer"/> <to uri="log:body?level=INFO"/> <to uri="cxfrs://bean://rsClient?ignoreDeleteMethodMessageBody=true "/> </route> </camelContext> If I have an interface like this: @Path("/api") public interface InventoryClient { @GET @Path("/inventory_transactions/{id}") @Consumes(MediaType.TEXT_XML) InventoryTransaction getInventory(@PathParam("id") Integer id); I can easily create a Java bean and use JAXRSClientFactory to create the client and use it or even use a CDI Producer to create it for injection. The only issue then is the multi-threading and how that might be handled and then doing things like calling reset on the client after an invocation. While I can do it it seems like I should be able to simply set up a route: from("direct:inventory").to("cxrs://bean//inventoryClient") in a route builder but obviously that's predicated on setting up the client. How does that setup translate? <cxf:rsClient id="inventoryClient" address="https:// <http://localhost/> remoteURI" serviceClass="foo.InventoryClient" I'd rather let Camel handle the underlying issues of resource management than do all that myself.