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

时间:2011-10-31 14:51:23

标签: soap xsd wsdl cxf

我正在使用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在本地maschine上使用webservice。

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

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

  

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

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

由于

〜克里斯

2 个答案:

答案 0 :(得分:0)

请按以下步骤操作:

  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中。应该默认完成。

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

答案 1 :(得分:0)

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

您可以试试answer并告诉我