17

I am starting now with Camel. I have seen the http4 component for http clients and the jetty component for http servers.

I have seen several examples that use one or the other. I would like to know if it is possible to combine them together.

Example

from("jetty:http://0.0.0.0:8080/myapp/myservice")
.to("http4://www.google.com");

This would make camel a simple http based router/proxy. Web browsers would hit the camel URL and instead get google. (Google is just an example, I have a real POST based service that I want to use)

Is this route possible? Should I research Camel or do I need a different software framework for this? In the future I would also need to add transformations/filters in between.

I have tried it and got a nullpointer exception

[qtp757856402-14] SendProcessor       DEBUG >>>> Endpoint[http4://www.google.com] Exchange[Message: [Body is instance of java.io.InputStream]]
[qtp757856402-14] DefaultErrorHandler DEBUG Failed delivery for exchangeId: ID-IT12-53265-1302683969823-0-1. On delivery attempt: 0 caught: java.lang.NullPointerException
[qtp757856402-14] DefaultErrorHandler ERROR Failed delivery for exchangeId: ID-IT12-53265-1302683969823-0-1. Exhausted after delivery attempt: 1 caught: java.lang.NullPointerException
java.lang.NullPointerException
kazanaki
  • 7,988
  • 8
  • 52
  • 79

1 Answers1

38

You need to bridge the endpoint.

from("jetty:http://0.0.0.0:8080/myapp/myservice")
.to("http4://www.google.com?bridgeEndpoint=true&throwExceptionOnFailure=false");
Claus Ibsen
  • 56,060
  • 7
  • 50
  • 65
  • 4
    I am impressed! I got an answer from the guru himself! Thank you! Please keep monitoring stackoveflow for camel questions... – kazanaki Apr 14 '11 at 10:34
  • 5
    I'm just nursing the community. That's important as well. And on the way you learn what end users does with Camel. – Claus Ibsen Apr 14 '11 at 15:05
  • 2
    We have added a page about this solution at: http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html – Claus Ibsen Aug 26 '12 at 07:39
  • 1
    Just a heads-up we are adding url rewriting support in Camel 2.11, which allows you more control of the url mappings when bridging. This page will have more details (at this time of writing still work in progress) - http://camel.apache.org/urlrewrite – Claus Ibsen Dec 28 '12 at 12:36