How to use Camel as a HTTP proxy between a client and server
You may have an existing HTTP service, which you want to use Camel in between as a proxy, between the client and the server.
This can be done using the Jetty component as follows:
In the example above, we expose a HTTP service on localhost (0.0.0.0 means to expose on all network interfaces) port 8080, and using context path "myapp".
matchOnUriPrefix is set to
true, to match any wildcards in the "myapp" context path. See more details here How do I let Jetty match wildcards.
Then we route to the
<to> which is also a jetty endpoint, which sends the requests to the real HTTP server. The
bridgeEndpoint option is set to
true, to tell Camel that its a bridging from an incoming Jetty service (ie. to act as a HTTP adapter/proxy). The option
throwExceptionOnFailure is set to
false, to rely back any errors communicating with the real HTTP server directly to the client, without using any Camel Error Handling (ie. no exception is raised from Camel).
More control of url mappings
From Camel 2.11 onwards you can use a custom url rewriter which gives you control of the url mappings. Such as handling situations where the mapping is not identical 1:1 mapping. See more details at the
urlRewrite option on HTTP, HTTP4, and Jetty components, and in particular read this page UrlRewrite about the