【问题标题】:Apache CXF wsdl does not include any data type definitionApache CXF wsdl 不包含任何数据类型定义
【发布时间】:2011-12-18 19:34:57
【问题描述】:

我正在使用 Apache CXF 2.4.2 来实现 SOAP Web 服务。我按照/改编了教程(请参阅下一个链接)以通过合同创建 Web 服务。

http://confluence.highsource.org/display/HJ3/Apache+CXF+Tutorial+-+Building+JAX-WS,+JAXB+and+JPA-based+web+service+with+Apache+CXF,+Spring+and+Hyperjaxb3

在此示例中,您可以看到一个 wsdl 和一个包含数据模型的 xsd 文件。此数据模型由 wsdl 文件导入。之后,我使用 Maven cxf-codegen-plugin (v. 2.4.2) 生成代码。一切似乎都很好。我可以编译我的项目,也可以使用 Eclipse Webservices Explorer 在本地机器上使用 Web 服务。

但在另一台计算机上,我只能看到网络服务操作。 wsdl 不包含数据模型 (http://***:18080/webservice/Test?wsdl) 并且另一个使用者无法生成客户端。

我测试了另一种情况,我将数据类型声明直接放入 wsdl,但效果相同 :-(。似乎 Apache CXF 在内部动态创建了一个新的 wsdl。

编写 wsdl -> 生成代码 -> apache cxf 即时生成 wsdl

有没有可以改变这种行为的开关?

谢谢

~克里斯

【问题讨论】:

    标签: soap xsd wsdl cxf


    【解决方案1】:

    请按以下步骤操作:

    1. 在“main/resources”中创建一个 META-INF/wsdl 文件夹,并将 wsdl 文件和 xsd 文件放入其中。
    2. 像这样设置 cxf-codegen-plugin 的extraarg -wsdlLocation 选项(参见http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.htmlhttp://cxf.apache.org/docs/wsdl-to-java.html):

      <wsdlOptions>
        <wsdlOption>
          ...
          <extraargs>
            ...
            <extraarg>-wsdlLocation </extraarg>
            <extraarg>wsdl/yourfile.wsdl</extraarg>
            ...
          <extraargs>
        <wsdlOption>
          ...
      <wsdlOptions>
      
    3. 确保您的 wsdl 和 xsd 捆绑在您的 jar 中。应该默认完成。

    CXF 应该公开您的文件,而不是它生成的文件。

    【讨论】:

      【解决方案2】:

      我在发布原始 WSDL 时遇到了问题。

      你可以试试这个answer 告诉我

      【讨论】:

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