CXFのServletトランスポートとJetty 6.1を使用してサービスを提供するアプリケーションがあります。このアプリケーションは、外部サービスも消費する必要があります。すべてのサービスは、WS-Addressing仕様(およびWS-RMを一番上に)をサポートしています。外部サービスを使用するには、アプリケーションから生成されたサービスクライアントを実行します。CXF:既存のServletトランスポート経由でデカップリングされたエンドポイントを提供する
問題は、クライアントのデカップリングされたエンドポイントを提供するとき(WS-RMがこのエンドポイントで別々のHTTP接続を介して受信メッセージを受信する必要がある)、CXFがJettyサーバーの別のインスタンスを実行することです。 (サービスを提供する)トランスポートと(何らかの外部サービスを消費する)クライアントが同じバスを共有する)。私はJettyの2つのインスタンスを必要としません(同じHTTPポート上で実行することはできません)。
既存のJettyサーバーとサーブレットトランスポートを使用してデカップリングされたエンドポイントを提供する方法はありますか?
Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
httpConduit.getClient().setDecoupledEndpoint(
"http://domain.com:port/services/dec_endpoints/TestDecEndpoint");
私は相対パスを提供する場合(「/ dec_endpoints/TestDecEndpoint」、相対パスは、サーブレット・トランスポートを経由してサービスの提供に使用されているだけのように):
はこれまでのところ、私はこのような切り離されたエンドポイントを有効にしますHTTPコンジットはSOAPメッセージのヘッダーにフルパスを指定していないので、これも機能しません(サーバーは/ dec_endpoints/TestDecEndpointにメッセージを送信できません)。