【发布时间】:2013-12-07 21:17:53
【问题描述】:
我的pom.xml 包含以下内容,用于为具有以下指定 WSDL 的工作 Web 服务自动生成客户端:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>generate-sources</id>
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/wsdl/myclient.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-verbose</extraarg>
</extraargs>
<wsdlLocation>wsdl/myclient.wsdl</wsdlLocation>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
项目构建良好,没有任何错误或警告,我可以在 wsdl 文件夹下的 JAR 文件中看到文件 myclient.wsdl。
但是当我尝试运行那个 JAR 时:
java -Xmx1028m -jar myclient-jar-with-dependencies.jar
它抱怨“无法从 wsdl/myclient.wsdl 初始化默认 wsdl”
为什么?
我错过了什么?
我如何找出在 pom.xml 中的wsdl/myclient.wsdl翻译成的什么路径,这使得客户端的 JAR 在运行时抱怨?
更新:我知道一些涉及修改自动生成代码的解决方案/解决方法:
- 为 wsdl URL 传递“null”,然后使用 ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://example.com/....") 设置地址。
- 将 WSDL 加载为 Java 资源和pass its location into your service's constructor。
但我对需要在pom.xml 中输入正确值的解决方案更感兴趣,例如classpath approach(但不幸的是,由于某种原因,类路径对我不起作用)。
有什么想法我应该在那里输入吗?显然,这是为该特定插件找出正确路径规则的一个非常简单的案例,但我遗漏了一些东西,我不知道它是什么。
【问题讨论】:
标签: wsdl cxf pom.xml wsdl2java