Apache Camel ServletをSpring MVCコントローラのエントリポイントの背後に隠したいのですが、私はSping BootとSpring MVC Controllerに依存する独自のコンポーネントがあるからです。Spring MVCコントローラのエントリポイントの後ろにApache Camelサーブレットを隠す
は、私が直接アクセスできるようにしたくないので、私は、キャメルサーブレットwithout any URL mappingsを登録している
<route id="Route">
<from uri="servlet:messages?httpMethodRestrict=POST"/>
<process ref="..."></process>
<to uri="{{storage.service.endpoint}}?bridgeEndpoint=true"/>
</route>
正常に動作している以下のApacheキャメルルートを持っています。春の豆:私はちょうどキャメルサーブレットに転送する必要が春コントローラのエントリポイントで
@Bean
ServletRegistrationBean servletRegistrationBean() {
CamelHttpTransportServlet camelServlet = new CamelHttpTransportServlet();
ServletRegistrationBean servletBean = new ServletRegistrationBean(camelServlet, false, new String[]{});
servletBean.setName("CamelServlet");
return servletBean;
}
:
@RequestMapping(method=RequestMethod.POST, value="/api/v1/*")
public void wrapper(HttpServletRequest request, HttpServletResponse response) throws Exception{
context.getNamedDispatcher("CamelServlet").forward(request, response);
}
問題はキャメルサーブレットは常にnull
あるrequest.getPathInfo()
を、使用してServletResolveConsumerStrategyに依存しているということですSpring Controllerのエントリポイントにあります。私は@RequestMapping
で異なるパスを試しましたが、常にrequest.getServletPath()
はフルパスを持ち、はヌルです
P.S.アプリケーションはTomcat 8で実行されています。