5

数十のXSDを含むWSDLがあり、Webサービスを利用するためにWSDLからクライアントコードを生成する必要があります。Webサービスの所有者はJavaを使用し、JAXBを使用してWSDL/XSDを生成しました。JAXBは、カスタマイズされたバインディングの「バインディングファイル」を指定し、所有者は、WSDLで使用されるXJBファイル(JAXBのカスタマイズされたバインディングファイル)を生成しました。

クライアントコードをC#で生成する必要がありますが、svcutilとVisualStudioのAddService Referenceには、このカスタマイズされたバインディングファイルのプロビジョニングがありません。バインディングファイルを引数として取るJavaクライアントコードを生成するツールはありますが、C#生成用のツールはありません。XJBを指定せずにsvcutilを実行しようとしましたが、動作させることができません。私は運が悪かったので広範囲のグーグル検索をしました。これを機能させる方法について何かアイデアはありますか?

4

2 に答える 2

1

バインディング宣言を提供することでWSDLをカスタマイズできますが、これらはJava固有であり、カスタマイズは、WSDLからJavaコードを生成するときにのみ適用されます。バインディングは、インライン(XSD / WSDLに埋め込まれている)または別のファイル内で宣言できます。別のファイルがあるので、WSDLとXSDは「クリーン」だと思います。

ただし、JXBファイルは赤いニシンです。WSDLはテクノロジーに依存しないことになっています。JavaやC#などは関係ありません。svcutilはJavaバインディングを無視するだけなので、コードを生成できるはずです。

svcutilはどのようなエラーをスローしますか?WSDLにセクションがない場合、理解しにくいメッセージで失敗するのを見てきました<type>。数十のXSDファイルについて言及しましたが、それらはどのようにWSDLにインポートされ、インポートは機能しますか?Visual StudioでWSDLを開くと、検証エラーが表示されますか?何かについて不平を言っていますか?

最後に、すべてが失敗した場合は、すべて(JXBファイルを含む)をwsimportなどのJavaツールにフィードして、そこからいくつかのJavaファイルを取得できます。Endpoint.publishを使用してクイックデプロイを実行してから、svcutilにデプロイされたアドレスプラスをポイントして?wsdl、別の結果が得られるかどうかを確認できます。

于 2012-11-13T21:30:41.203 に答える
0

WSCF.blueを試して、それがあなたのケースで役立つかどうかを確認してください。私はJABXに精通していませんが、このツールを現在使用して、wsdlからC#でコードを生成していることに注意してください。

于 2012-11-13T21:42:08.943 に答える