在Spring RestTemplate上构建服务的camel中是否有一个组件?

时间:2014-04-25 05:12:03

标签: spring-mvc apache-camel resttemplate

我在Tomcat服务器上运行REST服务。我使用Spring RESTTemplate创建了这个REST服务。那么CAMEL中有一个组件可以使用这个公开的Web服务吗?

我使用过http组件。我知道我们不能使用http组件来公开服务。所以请告诉我使用哪个组件。这里是对问题的详细描述。

在休息模板中创建的服务模板在服务器中运行,您可以从部分驼峰代码中看到该模板

我使用camel将此服务公开给另一个http服务,此服务的响应是来自其他服务的响应。

所以我的骆驼代码看起来像这样:

    from("http://localhost:8080/rest/emp/dummy").to(http://anotherweservice.com")

我收到此错误。

无法创建路由路由1:路由(路由1)[[从[]] - > [process [com.routes .....因为uri必须指定而不是空

1 个答案:

答案 0 :(得分:0)

看看http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html

使用Jetty组件,如下所示:

from("jetty:http://0.0.0.0:8080/myapp?matchOnUriPrefix=true")
    .log("myapp: httpPath = ${header.CamelHttpPath}")
    .to("jetty:http://localhost:8082/remoteapp?bridgeEndpoint=true&throwExceptionOnFailure=false")

在此示例中,请求将转发到另一个Jetty Camel端点:

from("jetty:http://0.0.0.0:8082/remoteapp?matchOnUriPrefix=true")
     .log("remoteapp: httpPath = ${header.CamelHttpPath}")
     .setBody(simple("${header.CamelHttpPath}"));

HTTP路径/hello/world被转移到端点,这可以在使用http://localhost:8080/myapp/hello/world调用服务时看到。在这种情况下,返回正文/hello/world。在日志中它说:

INFO  myapp: httpPath = /hello/world
INFO  remoteapp: httpPath = /hello/world