WSDLで記述されたWebサービスにアクセスするJavaアプリケーション用のモジュールを作成しようとしています。ソースWSDLは、ASP.NETWebサービスであると私が信じているものから直接ダウンロードされました。サービスURLは.asmx拡張子で終わり、ブラウザーでサービスURLを表示すると、WSDLのダウンロードに使用できるリンクが表示されます。
私にとって重要な要件は、再コンパイルせずにサービスURLを切り替えることができることです。私に与えられたURLは明らかにテストサーバーであり、本番環境で使用する本番URLが与えられることを私は知っています。また、テスト用のモックサーバーを自分で作成し、サービスが移動された場合に再コンパイルせずに、将来的に新しいURLを指定できるようにしたいと考えています。実際、アプリケーションをインストールして、異なるURLでWebサービスの複数のインスタンスをインスタンス化できるようにしたいと思います。
しかし、私の概念は、wsimportツールが私のために行っていることと一致していないようです。ここでのf1shの回答に続いて、ダウンロードしたWSDLから次のコマンドを使用してJavaコードを生成しました。
wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl
私が見つけたのは、生成されたコードに、ダウンロードしたwsdlFile.wsdlへのハードコードされた参照が含まれていることです。これにはサービスのURLが含まれています。このアプリケーションは、実行時にWSDLファイルを編集して構成できるようには実行されません。ビルド時にアプリケーションにコンパイルされ、インスタンス化時にサービスURLを設定できるコードが必要です。
実行時にWSDLを解析する必要がある理由が完全にはわかりません。WSDLがWebサービスにアクセスできるコードを生成するのに十分な情報を提供することは私の理解でした。そのため、サービスURL以外の生成されたコードに何が提供されているのかわかりません。また、サービスURLがで提供されない理由もわかりません。コンストラクター、または生成されたWebサービスクラスのメソッドを介して構成可能。私は何かが欠けているに違いありません。
このシナリオの一般的な方法は何ですか?ほとんどの人は、使用する個々のURLごとにコードを再生成しますか?コードは実行時に生成されますか?構成可能なURLを使用してクライアントコードを構築するために使用できる別のWSDLツールはありますか?