現在、Java B2B Webサービスのクライアントを構築することをやめていますが、かなり長い間抱えていた問題の原因を特定できたと思います。残念ながら、WSDLを投稿できません。
どうやら私の自動生成されたプロキシコード(wsdl.exe経由:パスワードダイジェストをサポートしていないWCFのためにWSE 3.0を使用する必要があります)は、同じ複雑なリターンタイプを持つ複数のWebメソッドを持つWebサービスのWSDLを処理できません。
たとえば、次のメソッドを定義するWebサービスを考えてみましょう。
Public ComplexTypeX Blah();
Public ComplexTypeX Blue();
Public ComplexTypeX Foo();
Public ComplexTypeY Bar();
Reference.csファイルで、Blah()、Blue()、またはFoo()のいずれか2つを呼び出すすべてのコードをコメントアウトすると、コメントされていない残りのメソッドを問題なく呼び出すことができます。ただし、コメントアウトされていないこれらの3つのメソッド(たとえば、Blah()およびFoo())が複数ある場合、Webサービスクライアントコードのインスタンス化時に次のエラーメッセージが表示されます。
「メソッドBlahは反映できません。」「名前空間' http://some.url 'のXML要素'ComplexTypeX'は、メソッドとタイプを参照します。WebMethodAttributeを使用してメソッドのメッセージ名を変更するか、XmlRootAttributeを使用してタイプのルート要素を変更してください。」
現在、ComplexTypeX
Webサービスの一部として定義されているメソッドは絶対にないため、.NET(または少なくともwsdl.exe)では、複雑な(ユーザー定義の)Webサービスを使用できないと想定できます。複数のメソッドにまたがる同じタイプのタイプ...そうですか?