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:
<route> <from uri="jetty:http://0.0.0.0:8080/myapp?matchOnUriPrefix=true"/> <to uri="jetty:http://realserverhostname:8090/myapp?bridgeEndpoint=true&throwExceptionOnFailure=false"/> </route>
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".
The option 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).