如何在Quarkus CXF中配置autoNameResolution解决WSDL类生成冲突?
在Quarkus CXF中配置autoNameResolution解决参数重复问题
方案一:通过Maven插件传递原生参数
Quarkus CXF的代码生成插件quarkus-cxf-codegen-maven-plugin支持通过extraArgs传递CXF wsdl2java的原生参数,以此开启autoNameResolution:
在你的pom.xml中找到插件配置块,添加extraArgs节点指定-autoNameResolution参数:
<plugin> <groupId>io.quarkiverse.cxf</groupId> <artifactId>quarkus-cxf-codegen-maven-plugin</artifactId> <version>${quarkus-cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> <configuration> <wsdlOptions> <wsdlOption> <wsdl>src/main/resources/你的服务.wsdl</wsdl> <!-- 开启自动名称解析 --> <extraArgs> <extraArg>-autoNameResolution</extraArg> </extraArgs> </wsdlOption> </wsdlOptions> </configuration> </execution> </executions> </plugin>
方案二:使用JAXB绑定文件手动重命名参数
如果上述参数配置不生效,可以编写JAXB绑定文件手动处理冲突参数。创建binding.xml文件:
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.0"> <jaxws:bindings wsdlLocation="你的服务.wsdl" node="wsdl:definitions/wsdl:portType[@name='你的端口类型']/wsdl:operation[@name='ping']"> <jaxws:parameter> <jaxb:property name="responseHeader"/> </jaxws:parameter> </jaxws:bindings> </jaxws:bindings>
然后在插件配置中引入该绑定文件:
<wsdlOption> <wsdl>src/main/resources/你的服务.wsdl</wsdl> <bindingFiles> <bindingFile>src/main/resources/binding.xml</bindingFile> </bindingFiles> </wsdlOption>
内容的提问来源于stack exchange,提问作者Gerard
相关产品推荐
相关产品推荐

