我想通过我的应用程序公开 3 个 api。模式如下:
/api/ui/* (由 Spring 处理) 映射到 servlet 1
/api/api1/*(由 Camel 的 servlet 组件处理)映射到 servlet 2
/api/api2/*(由 Camel 的 servlet 组件处理)映射到 servlet 3
看来我不能用骆驼做到这一点...
这就是我注册 servlet 2 的方式:
@Bean
public ServletRegistrationBean camelServletRegistrationBean() {
final CamelHttpTransportServlet camelServlet = new CamelHttpTransportServlet();
final ServletRegistrationBean servletBean = new ServletRegistrationBean(camelServlet, "/api/api1/*");
servletBean.setName("servlet2");
return servletBean;
}
public class Api1RestInputRoute extends RouteBuilder {
restConfiguration().component("servlet").componentProperty("servletName", "servlet2");
rest()
.consumes(MediaType.TEXT_PLAIN_VALUE)
.get("/health").to("log:api1");
}
public class Api2RestInputRoute extends RouteBuilder {
restConfiguration().component("servlet").componentProperty("servletName", "servlet3");
rest()
.consumes(MediaType.TEXT_PLAIN_VALUE)
.get("/health").to("log:api2");
}
看起来两个 restConfigurations 都在同一组件上设置了 “servletName” 属性,第一个组件获胜。
我不想有 /api/camel/api1/, /api/camel/api2/ for Camel Servlet...
我的 Apache Camel 版本是 2.21.5
慕姐8265434
小唯快跑啊
相关分类