1

Camel が提供する標準統合 (実行可能 JAR に組み込まれた Jetty を使用) を使用して、CXF-RS で Apache Camel を使用していますが、完全に動作します。

すでに CXF を使用しているため、OAuth サポートを (OAuth 1 プロバイダーとして) REST サーバーに追加したいと考えています。CXF JAX-RS OAuth 統合を使用する予定です: http://cxf.apache.org/docs/jax -rs-oauth.html

残念ながら、OAuth サポートにはサーブレットを使用する必要があるようで、Camel Processor の呼び出しの前にこれを追加するのに苦労しています。私のルートは次のように定義されています。

String CONTEXT = "?resourceClasses=" + MyServiceResource.class.getName();
final String cxfRSEndpointUri = "cxfrs://http://" + restServerUrl + ":" + restServerPort + CONTEXT;
from(cxfRSEndpointUri).process(restProcessor);

プロセッサの観点 (restProcessor) から見ると、Exchange オブジェクトから HttpServletRequest と HttpServletResponse を取得できません。cxfrs ルートで正しい本体が得られません。

final HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class);
final HttpServletResponse response = exchange.getOut().getBody(HttpServletResponse.class);

これら 2 つのコマンドは null を返します。cxfrs は従来の Camel HTTP ルートとは異なります。

cxfrs ルートを使用する前に、サーブレット フィルター (CXF JAX-RS OAuth によって提供される OAuthServletFilter) を追加するキャメル ルートを構成する方法はありますか?

もう 1 つの方法は、CXF JAX-RS OAuth のソースを確認することです。AbstractAuthFilter.java クラスには、OAuth に必要なチェックの実装が含まれていますが、可能であれば、このクラスの一部をフォークしたくないので、キャメルによって提供された交換オブジェクトから HTTP ヘッダー/値を手動で確認する必要があります。もっと良い方法があるはずだと思いますが、間違っているかもしれません。

4

1 に答える 1