我正在使用Apache CXF 2.4.2来实现SOAP Web服务。我按照/修改了教程(参见下一个链接),通过合同创建了一个Web服务。
在此示例中,您可以看到包含数据模型的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
有没有可以改变这种行为的开关?
由于
〜克里斯
答案 0 :(得分:0)
请按以下步骤操作:
像这样设置cxf-codegen-plugin的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捆绑在你的jar中。应该默认完成。
CXF应该公开您的文件,而不是它生成的文件。
答案 1 :(得分:0)
我在发布原始WSDL时遇到了问题。
您可以试试answer并告诉我