CXF和通知操作

时间:2017-10-23 17:23:45

标签: wsdl cxf wsdl2java

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

  • 单向:" wsdl:输入"
  • 请求 - 响应:" wsdl:input", " WSDL:输出"和" wsdl:fault"
  • 征求反应:" wsdl:输出", " WSDL:输入"和" wsdl:fault"
  • 通知:" wsdl:output"的

使用Apache CXF V3.2.0,我尝试从现有的WSDL生成客户端(wsdl2java),我们只有" wsdl:output" in" wsdl:operation" :

<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生成Client类? Apache CXF支持It Notification Operations?

1 个答案:

答案 0 :(得分:1)

尽管WSDL 1.1规范定义了4种类型的操作类型,但是WSDL定义已根据WS-I基本概要文件中定义的规则进行了验证。

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

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

  

警告:此Web参考不符合WS-I Basic Profile v1.1。   R2303:描述绝对不能在wsdl:portType定义中使用Solicit-Response和Notification类型操作。 WSDL 1.1没有很好地定义请求响应和通知操作。此外,WSDL 1.1并未为其定义绑定。