Soap Apache CXF wsdl不包含任何数据类型定义

Soap Apache CXF wsdl不包含任何数据类型定义,soap,xsd,wsdl,cxf,Soap,Xsd,Wsdl,Cxf,我使用ApacheCXF2.4.2实现SOAP Web服务。我遵循/改编了教程(见下一个链接),通过合同创建了一个Web服务 在本例中,您可以看到包含数据模型的wsdl和xsd文件。此数据模型由wsdl文件导入。之后,我使用Maven cxf codegen插件(v.2.4.2)生成代码。一切似乎都很好。我可以编译我的项目,也可以使用EclipseWebServicesExplorer在本地maschine上使用webservice 但在另一台计算机上,我只能看到Web服务操作。wsdl不包含

我使用ApacheCXF2.4.2实现SOAP Web服务。我遵循/改编了教程(见下一个链接),通过合同创建了一个Web服务

在本例中,您可以看到包含数据模型的wsdl和xsd文件。此数据模型由wsdl文件导入。之后,我使用Maven cxf codegen插件(v.2.4.2)生成代码。一切似乎都很好。我可以编译我的项目,也可以使用EclipseWebServicesExplorer在本地maschine上使用webservice

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

我测试了另一个案例,其中我将数据类型声明直接放入wsdl中,但效果是相同的:-(。看起来ApacheCXF在内部动态创建了一个新的wsdl

编写wsdl->生成代码->apache cxf动态生成wsdl

是否存在可以更改此行为的开关

谢谢


~Chris

请按照以下步骤操作:

  • 在“main/resources”中创建一个META-INF/wsdl文件夹,并将wsdl文件和xsd文件放入其中
  • 如下所示设置cxf codegen插件的
    extraarg
    -wsdlLocation选项(请参阅和):

    
    ...
    ...
    -wsdlLocation
    wsdl/yourfile.wsdl
    ...
    ...
    
  • 确保您的wsdl和xsd绑定在您的jar中。默认情况下应该这样做


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

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

    你可以试试这个,让我知道

    <wsdlOptions>
      <wsdlOption>
        ...
        <extraargs>
          ...
          <extraarg>-wsdlLocation </extraarg>
          <extraarg>wsdl/yourfile.wsdl</extraarg>
          ...
        <extraargs>
      <wsdlOption>
        ...
    <wsdlOptions>