バックストーリー:
顧客が作成した (交渉不可) WSDL があります。これは、複数の Web 標準を 1 つのサービスに組み合わせたものです。この 1 つの SOAP サービスには、XSD をインポートする参照 (wsdl:import) WSDL ファイル内のバインディングを参照する 4 つの SOAP ポートがあり、依存関係ツリーが非常に複雑になります。
これはインポートによって行われるため、最上位の WSDL はそれほど大きくありません。WSDL2Java と wsimport はそれを妨げますが、私は JAXB オブジェクトにコンパイルされたスキーマのライブラリを使用して動作します。そこで、必要なすべての操作を備えた CXF サービスを作成し、SoapUI でテストすることができました (Java クラスを作成する必要がないため、最上位の WSDL を正常にインポートしました)。
すべての SOAP ポートが同じアドレスを指し、そのサービスがさまざまなポートからのすべての操作を処理するため、クライアントはサーバーがすべての操作が同じポートに属していると認識していることを知りません。
問題:
これは、CXF が WSDL を生成する場合に当てはまります。すべての操作を同じ名前空間を持つ 1 つのポートに配置します。顧客提供の WSDL では、サービス、ポート、およびバインディングがすべて同じ名前空間にあるわけではありません。@WebService(wsdlLocation="") アノテーションを使用してサービスに WSDL を提供しようとしましたが、それを解析してコードに一致させようとします (正常な世界でそうであるように)。
質問:
http://example.com/service?wsdl操作をインターセプト/オーバーライドして、顧客提供の wsdl を返したいと考えています。CXFでこれを行う方法はありますか?