Apache CXF wsdl不包含任何数据类型定义
问题描述:
我正在使用Apache CXF 2.4.2来实现SOAP Web服务。我遵循/修改了教程(请参阅下一个链接)以通过合同创建Web服务。Apache CXF wsdl不包含任何数据类型定义
在这个例子中,你可以看到一个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
是否有任何开关,我可以改变这种行为
感谢
?个〜克里斯
答
请按照下列步骤操作:
- 创建一个文件夹META-INF /你的 '主/资源' 在它的把你的WSDL文件和XSD文件中WSDL。
-
这样设置CXF-CODEGEN-插件的
extraarg
-wsdlLocation选项(参见http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html和http://cxf.apache.org/docs/wsdl-to-java.html):<wsdlOptions> <wsdlOption> ... <extraargs> ... <extraarg>-wsdlLocation </extraarg> <extraarg>wsdl/yourfile.wsdl</extraarg> ... <extraargs> <wsdlOption> ... <wsdlOptions>
确认,您的WSDL和XSD是你的罐子内捆绑在一起。应该默认完成。
CXF应该公开您的文件而不是其生成的文件。