我试图生成使用附带的Apache CXF WSDL2Java工具Web服务代理。 生成本身似乎去就好了,但也有在生成文件的一些错误,不存在的构造函数被调用。
该文件提供了一个解决方案:
//This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2
//API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1
//compliant code instead.
于是我开始下载并安装2.2版本的JAX-WS的API。 我发现下面的安装手册,解释如何认可这些新文件: http://dcx.sybase.com/1200/en/dbprogramming/httpserver-jaxws-lesson-two.html我遵循这个指南的每一步,删除旧的生成的文件,并生成新的,但问题仍然存在。
任何提示和/或招数? (当然现在,我使用的是-frontend jaxws21标志产生的代理,但仍)。
<defaultOptions>
<frontEnd>jaxws21</frontEnd>
</defaultOptions>
这是我如何解决使用maven的问题:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>generate-sources2</id>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot>
<defaultOptions>
<frontEnd>jaxws21</frontEnd>
</defaultOptions>
<wsdlOptions>
<wsdlOption>
<wsdl>...</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
编辑:我找到了另一种方式来解决这个使用maven和CXF版本2.7.3。 在你的依赖,加入这些库。 现在您不必须使用jaxws21选项:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.9</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.7</version>
</dependency>