我在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必须指定而不是空
答案 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