私の環境の前提:すべての SOAP 要件を処理するために spring-ws を使用して Spring 3 で実行しています。これについては、さまざまなベンダーと複数の統合を行ってきましたが、問題はありません。
問題:この最近の統合には、非常に古いものを実行しているベンダーがいて、その WSDL は rpc バインド スタイルを使用しています。言うまでもなく、JAXWS は rpc を完全にはサポートしていません (相互運用のアンチテーゼであるため、当然のことです)。
考えられる解決策 #1: Axis 1 を使用して WSDL でスタブを生成することを試みることができます。実際、既にこれを行っていますが、Axis 依存関係を pom に導入することに非常に消極的です。現在非常に安定している環境を台無しにする可能性のある膨大な量のライブラリの競合が発生することは間違いありません。
考えられる解決策 #2: WSDL を、JAXWS が解析できるドキュメント/リテラルに書き直すことができます。WSDL を実際に書き換える際にいくつかの問題が発生します (「メッセージ部分 "xxx" のスキーマ記述子 {xxx}xxx を取得することは定義されておらず、Java にバインドできませんでした」)。その上、エンドポイントが特に rpc をチェックする場合、とにかく私はうんざりしています。
考えられる解決策 #3: Axis とこのサービス クライアントを実行するまったく新しいボックスをデプロイできます。つまり、メイン プロジェクトはこのボックスに対して REST 呼び出しを行い、SOAP 要求を作成して応答を解析します。それを行うのは非常にばかげた方法のようです(そして、単純であるべき何かのためのばかげた量の作業)。
私が逃した解決策はありますか?また、私はこれについてグーグルをトロールしてきました.一部の人々は#1で成功していますが、その後のフォールアウトについては誰も実際に話していません. (つまり、Axis の従来の依存関係を処理したり、Spring 3 で Axis をうまく機能させようとしたりなど)