5

我有一个带有几十个 XSD 的 WSDL,我需要从 WSDL 生成客户端代码来使用 Web 服务。Web 服务的所有者使用 Java 并使用 JAXB 生成 WSDL/XSD。JAXB 为自定义绑定指定了一个“绑定文件”,并且所有者已经生成了一个 XJB 文件(JAXB 自定义绑定文件)以与 WSDL 一起使用。

我需要在 C# 中生成我的客户端代码,但 svcutil 和 Visual Studio 的 Add Service Reference 对此自定义绑定文件没有任何规定。有一些工具可以生成将绑定文件作为参数的 Java 客户端代码,但没有用于 C# 生成的工具。我尝试只运行 svcutil 而不指定 XJB,但我无法让它工作。我做了广泛的谷歌搜索,但没有运气。关于如何使这项工作的任何想法?

4

2 回答 2

1

您可以通过提供绑定声明来定制 WSDL ,但这些声明是特定于 Java 的,并且定制仅适用于从 WSDL 生成 Java 代码时。可以内联(嵌入在 XSD/WSDL 中)或在单独的文件中声明绑定。您有一个单独的文件,所以我认为 WSDL 和 XSD 是“干净的”。

JXB 文件是一个红鲱鱼。WSDL 应该与技术无关,它不关心 Java、C# 或其他任何东西。您应该能够生成代码,因为 svcutil 将忽略 Java 绑定。

svcutil 会向您抛出什么错误?<type>当 WSDL 缺少一个部分时,我已经看到它失败并出现难以理解的消息。您提到了几十个 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 回答