![](/img/trans.png)
[英]Checked exceptions hierarchy in WebServices using JAX-WS Maven Plugin (wsimport)
[英]Maven jax-ws plugin wsimport giving “The nested type x cannot hide an enclosing type” in generated code
详情:
示例maven pom内容:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>wsdla-exec-1</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFiles>service1.wsdl</wsdlFiles>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
<execution>
<id>wsdla-exec-2</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFile>service2.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
</executions>
</plugin>
描述:
我已经在Mule中使用wsdl生成客户端代码已有相当一段时间了,它一直都非常简单和高效,但是现在我遇到了一个麻烦,在这里我可能会找到正确方向的指针。
基本上,在wsdl生成的代码中,有一个与容器类同名的嵌套类,这在使用wsdl的项目中产生红色。
我知道的:
我可以手动和中提琴来更改代码,或者更好的是,我可以将wsimport更改为使用静态文件(从url复制-包括所有xsd)并更改这些文件。 但是,两者似乎都错了!
有什么方法可以操纵代码生成过程,还是应该要求供应商进行更改? 你怎么看?
非常感谢,非常感谢您的投入。
答案在于这样一个事实,即供应商实际上打算让消费者使用xmlbeans进行绑定,而不是按照当前的jax-ws标准使用jaxb。 因此,为了从wsdl创建客户端代码,我可以执行以下任一操作。
在Windows上(如果您有此工具):
md YourServiceFolderName
WSDL2java -uri YourService.wsdl -ss -sd -ssi -g -d xmlbeans -o YourServiceFolderName
使用Maven插件时,请在“ plugins”标签下(一定要弄清您将需要的依赖关系-此处未给出):
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.7.8</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>YourService?wsdl</wsdl>
<extraargs>
<extraarg>-databinding</extraarg>
<extraarg>xmlbeans</extraarg>
</extraargs>
</wsdlOption>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
这将为您提供继续使用服务所需的所有Java人工制品。 希望这对某人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.