【问题标题】:Can't generate java classes from wsdl using wsdl2java无法使用 wsdl2java 从 wsdl 生成 java 类
【发布时间】:2013-03-07 08:30:22
【问题描述】:

我有一个使用StackService 从.NET 应用程序生成的wsdl 文档。 我使用Apache CXF 来获取一些生成的java 类。

我正在运行以下命令(Windows):

D:\SomePath>wsdl2java -d d:\temp http://mywsdl.com

结果如下:

WSDLToJava 错误:

总结:失败:50,警告:0

无法在架构中找到消息 http://schemas.servicestack.net/types}CadastroUsuarioOut> 引用的类型 http://schemas.servicestack.net/types}CadastroUsuarioResponse> 中的部分

在架构中找不到消息 http://schemas.servicestack.net/types}ContratoImovelIn> 引用的类型 http://schemas.servicestack.net/types}ContratoImovel> 部分

另外还有 48 个类似这些部分的消息错误

WSDL 是自动生成的,并且正在被其他系统成功使用。

有什么想法吗?

谢谢

【问题讨论】:

  • 因为它说模式中没有定义类型,所以第一步是检查这是否是真的,即 WSDL 是否引用了一些 XML 模式(*.xsd 文件)?它们可用于 wsdl2java 吗?它们是否包含缺少的类型定义?

标签: java webservice-client wsdl2java


【解决方案1】:

我收到了相同的错误消息(当然使用不同的 wsdl),我看到您的 中有 秒。

我的问题的解决方案是将 schemaLocation 添加到 s。

老例子

<xsd:import namespace="http://schemas.servicestack.net/types"/>

示例新

<xsd:import namespace="http://schemas.servicestack.net/types" schemaLocation="types.xsd" />

【讨论】:

  • 这个解决方案对我有用。谢谢你。但是为什么您认为 WSDL 需要使用 schemaLocation 专门定义的模式位置?为什么将 XSD 与 WSDL 放在同一目录中还不够?
【解决方案2】:

检查 wsdl 的“类型”部分。 'types' 部分定义了用于在 SOAP 消息中交换数据的各种 xml 类型。 查看示例 wsdl 文件 -

http://heasarc.gsfc.nasa.gov/itwg/wsdl_all.html

验证 wsdl 的“类型”部分是否有效并定义服务使用的所有数据类型。

通过查看错误,“类型”定义中似乎缺少“CadastroUsuarioResponse”和“ContratoImovel”。

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多