私はApache Camelを初めて使用し、ルーティングに関する次の問題を解決しようとしています:
CXF JAX-RS ベースの REST サービスを実装し、同じ JVM (エンドポイント) にデプロイしました。
同じJavaプロセス内にないRESTサービスの別のセットがあります(pythonまたは他のプロセスですが、同じホスト上にあります)。
両方のサービスにアクセスするためのユニファイド ポートがあります。たとえば、
クライアント呼び出し ----> HTTP Rest 呼び出し (8080) ---> Jetty サーバー (8080) ---> Camel Route( if(“/java_api/” ----→ to( http://localhost :9090 ) else { to ( 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>
このアプローチの問題は、すでにローカルでホストされており、HTTP 呼び出しを発生させたくないため、Java API(java_api) ルートの不要な http 呼び出しがあることです。
これは、すべての CXF コンテキストをセットアップして (この情報は私に提供されました)、REST サービスを提供できるようにするために行われました。
だから、私の質問は次のとおりです。
1) Java API の http 呼び出しではなく、cxf ローカルバインディング JAX-RS (直接呼び出し) を呼び出すようにルートを設定する方法はありますか?
2) HTTP プロキシ ヘッダー ( X-Forwarded-For など) が作成され、古い Service API に渡されるようにルートを構成するにはどうすればよいですか? それ以来、Java Layer は実際にプロキシ サーバーとして機能しています。
助けてくれてありがとう!