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

问题描述:

我正在使用Apache CXF 2.4.2来实现SOAP Web服务。我遵循/修改了教程(请参阅下一个链接)以通过合同创建Web服务。Apache CXF wsdl不包含任何数据类型定义

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上使用web服务。

但在另一台电脑上,我只能看到web服务的操作。 wsdl不包含数据模型(http:// * **:18080/webservice/Test?wsdl),另一个消费者无法生成客户端。

我测试,我把数据类型声明直接到WSDL,但效果是一样的:-(另一种情况,似乎这样Apache CXF在内部创建在运行一个新的WSDL。

写一个wsdl - >生成的代码 - >的Apache CXF可即时生成WSDL

是否有任何开关,我可以改变这种行为

感谢

?个

〜克里斯

请按照下列步骤操作:

  1. 创建一个文件夹META-INF /你的 '主/资源' 在它的把你的WSDL文件和XSD文件中WSDL。
  2. 这样设置CXF-CODEGEN-插件的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是你的罐子内捆绑在一起。应该默认完成。

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

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

您可以试试这个answer并让我知道