【问题标题】:Generating classes from WSDL: Duplicate operation with name error从 WSDL 生成类:名称错误的重复操作
【发布时间】:2011-11-25 14:52:04
【问题描述】:

我正在尝试使用 Eclipse(新 Web 服务客户端)生成 Java 类。

Eclipse 抛出此异常:

Error in generating Java from WSDL: java.lang.IllegalArgumentException: Duplicate operation with name=OpName, found in portType '{http://tempuri.org/}MyServiceSoap'.

在 WSDL 中:

<wsdl:operation name="OpName"> <wsdl:input message="tns:tnsIn"/> <wsdl:output message="tns:tnsOut"/> </wsdl:operation>

<wsdl:operation name="OpName"> <wsdl:input name="name" message="tns:tnsIn"/><wsdl:output name="name" message="tns:tnsOut"/></wsdl:operation>

我该如何解决这个问题?您能否推荐任何其他工具或开发环境来根据 WSDL 生成类?

【问题讨论】:

    标签: java android web-services wsdl


    【解决方案1】:

    这是操作重载的情况。这仅在 WSDL1.1 规范中得到支持。根据新的 WSDL1.2 规范,不允许操作重载。您将不得不更改操作的名称。

    查看this link

    引用此链接。

    这里需要注意的是支持重载操作 在 WSDL 1.1 中(请参阅下面“资源”部分中的链接),但有 已从 WSDL 1.2 的规范草案中删除。委员会 制定新草案已决定不应超载 展示。该决定的理由和意见不在 本文的范围,但有关于它的参考说明 WSDL 1.2 的当前工作草案

    所以只是为了让它工作,更改操作的名称,或者如果您正在生成客户端,请检查 eclipse 是否提供了一些选项来选择 WSDL 版本。

    【讨论】:

    • 谢谢。我已经解决了这个问题。但 Android 不支持某些软件包。所以我得想办法。
    【解决方案2】:

    也许摆脱 wsdl 中的第二个 OpName 操作?

    【讨论】:

    • 我试过了,它会生成类。但是有一个The hierarchy of the type ClassName is inconsistent 错误。并且java.rmi.Remote 无法识别。可能Android不支持生成Web Service Client。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多