在maven中根据wsdl文件生成wsdl文件和webservice客户端
我正在开发一个项目,其中有一个网络服务模块和一个网络模块。我希望根据webservice的wsdl文件生成一个客户端,并且希望在构建webservice模块时生成wsdl文件。
我发现maven插件可以做到这一点(axis2-java2wsdl-maven-plugin和axis2-wsdl2code-maven-plugin),但是axis2-java2wsdl-maven-plugin不断为wsdl文件生成无效的xsd(我认为它在至少)。
Web 服务从其方法返回一些枚举,或返回包含枚举的对象。生成 wsdl 文件时,我得到了对“xs:Enum”的引用,对于两种枚举类型,该引用在给定命名空间中不存在。我有几个,但只有两个得到这个 base="xs:Enum"。
<xs:complexType name="LoginType">
<xs:complexContent>
<xs:extension base="xs:Enum">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
因此,当使用 axis2-wsdl2code-maven-plugin 构建客户端模块时,我收到以下错误:
error: src-resolve: type 'Enum@http://www.w3.org/2001/XMLSchema' not found.
我不明白为什么它不断生成无效的 XSD!
I am working on a project where I have a webservice module, and a webmodule. I want a client to be generated based on the wsdl file of the webservice, and I want the wsdl file to be generated when I build the webservice module.
I have found the maven plugins to do this(axis2-java2wsdl-maven-plugin and axis2-wsdl2code-maven-plugin), but the axis2-java2wsdl-maven-plugin keeps generating invalid xsd for the wsdl file(I think its invalid at least).
The webservice returns some enums from its methods, or returns objects that contain enums. When generating the wsdl file, I get a reference to "xs:Enum" which does not exist in the given namespace for two of the enum types. I have several, but only two of them gets this base="xs:Enum".
<xs:complexType name="LoginType">
<xs:complexContent>
<xs:extension base="xs:Enum">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
So when building the client module with the axis2-wsdl2code-maven-plugin, I get the following error:
error: src-resolve: type 'Enum@http://www.w3.org/2001/XMLSchema' not found.
I don't understand why it keeps generating invalid XSD!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很长一段时间以来,这一直是已知问题。这是我开始使用 Apache CXF 而不是 Axis 的(众多)原因之一。它甚至还有类似的 Maven 插件。
This has been a known issue for a very long time. It's one of the (many) reasons I started using Apache CXF instead of Axis. It even has a similar Maven Plugin.