我使用的是jaxws-maven-plugin
版本2.1
。我发现从jar资源中为WSDL位置生成了非常奇怪的代码:
<configuration>
<keep>true</keep>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
<extension>true</extension>
<wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
<packageName>my.package.gen</packageName>
<wsdlLocation>wsdl/*</wsdlLocation>
<wsdlFiles>
<wsdlFile>mywsdl.wsdl</wsdlFile>
</wsdlFiles>
</configuration>
生成的代码为:
static {
URL url = null;
try {
URL baseUrl;
baseUrl = my.package.gen.My_Service.class.getResource(".");
url = new URL(baseUrl, "wsdl/mywsdl.wsdl");
} catch (MalformedURLException e) {
logger.warning("Failed to create URL for the wsdl Location: 'wsdl/mywsdl.wsdl', retrying as a local file");
logger.warning(e.getMessage());
}
MYSERVICE_WSDL_LOCATION = url; }
所以wsdl文件是在生成的类所在的目录(package)中查找的,而不是在主jar目录中查找,这是合乎逻辑的。
这是jaxws-maven-plugin
中的错误,还是我的配置中的错误?
3条答案
按热度按时间0vvn1miw1#
您应该使用jaxws-maven-plugin 2.3版而不是2.1版,结果将如您所预期。
2.3版的输出如下(如果wsdl文件夹在src/main/resources下):
6rqinv9w2#
在我的例子中,生成的文件缺少
class.getClassLoader()
部分。通过在resources
目录中的目录名前添加正斜杠(/)来修复这个问题,如下所示:<wsdlLocation>/wsdl/*</wsdlLocation>
完整配置代码段:
bcs8qyzn3#
对于代
这是预期的行为,根据这个,
https://www.mojohaus.org/jaxws-maven-plugin/wsimport-mojo.html#wsdlLocation
这取决于你想做什么。
如果困扰你的是
我的_服务.class.getResource(“.”);
您可以使用类似以下的语句来删除点(相对路径):