我是 Apache Camel 的新手,并试图解决以下路由问题:
我在同一个 JVM(端点)中实现和部署了基于 CXF JAX-RS 的 REST 服务。
我有另一组 REST 服务,它们不在它所在的同一 Java 进程中(python 或任何其他进程,但在同一主机上)。
我们有统一的端口来访问这两种服务,例如,
客户端调用 ----> HTTP Rest 调用 (8080) -----> Jetty Server(8080) ---> Camel Route( if(“/java_api/” ----→ to( http://localhost ) :9090 ) else { 到 ( http://localhost:9091 (旧服务)}
<cxf:rsServer id="javaRestServer" address="http://localhost:9090/java_api"
loggingFeatureEnabled="true"
serviceClass="…." >
<cxf:providers>
<ref bean="jaxbProvider" />
<ref bean="jsonProvider" />
</cxf:providers>
<cxf:serviceBeans>
<ref bean="myService"/>
</cxf:serviceBeans>
</cxf:rsServer>
这种方法的问题是对 Java API(java_api) 路由有不必要的 http 调用,因为它已经在本地托管,我不想招致 HTTP 调用。
这样做是为了设置所有可以设置的 CXF 上下文(给我的这个信息)并能够提供 REST 服务。
所以,我的问题是:
1)有没有办法设置路由来调用 cxf 本地绑定 JAX-RS(直接调用)而不是 Java API 的 http 调用?
2)如何配置路由,以便创建 HTTP 代理标头(例如 X-Forwarded-For )并传递给旧的服务 API?因为,Java 层确实充当了代理服务器。
提前感谢您的帮助!