【问题标题】:CXF and Notification OperationCXF 和通知操作
【发布时间】:2017-10-23 17:23:44
【问题描述】:

在 WSDL 1.1 规范中,我们有 4 种操作类型:

  • 单向:“wsdl:input”
  • 请求-响应:“wsdl:input”, "wsdl:output" 和 "wsdl:fault"
  • 请求响应:“wsdl:输出”, "wsdl:input" 和 "wsdl:fault"
  • 通知:“wsdl:output”

使用 Apache CXF V3.2.0,我尝试从现有的 WSDL 生成客户端(wsdl2java),在我们的通知操作中,“wsdl:operation”中只有“wsdl:output”:

<wsdl:operation name="NotifyMe">
    <wsdl:output action="myPort/NotifyMe" message="tns:myPort_NotifyMe_Output" />
</wsdl:operation>

我在构建过程中遇到了这个错误:

[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.2.0:wsdl2java (generate-sources) on project soap-callback: Execution generate-sources of goal org.apache.cxf:cxf-codegen-plugin:3.2.0:wsdl2java failed:
[ERROR] Summary:  Failures: 1, Warnings: 0
[ERROR] 
[ERROR] <<< ERROR!
[ERROR] Invalid WSDL, Operation NotifyMe in PortType {myPort} not request-response or one-way

我如何解决此错误并从此 WSDL 生成客户端类? Apache CXF 是否支持通知操作?

【问题讨论】:

    标签: wsdl cxf wsdl2java


    【解决方案1】:

    虽然 WSDL 1.1 规范定义了 4 种操作类型,但 WSDL 定义是按照 WS-I Basic Profile 中定义的规则进行验证的。

    WS-I 基本配置文件 - 规则 R2303 对请求响应和通知有限制。

    这是来自不同实用程序(MS 的 wsdl.exe)的不同错误消息,它更彻底地解释了同一件事

    警告:此 Web 参考不符合 WS-I Basic Profile v1.1。 R2303:描述不得在 wsdl:portType 定义中使用 Solicit-Response 和 Notification 类型的操作。 WSDL 1.1 没有很好地定义 Solicit-Response 和 Notification 操作;此外,WSDL 1.1 没有为它们定义绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多