从Spring Boot jar文件加载WSDl文件?

时间:2018-07-25 13:11:32

标签: java spring web-services spring-boot wsdl

很抱歉,如果重复的话,我看了其他几个问题,但似乎没有一个匹配或提供可行的解决方案。

问题 我正在编写一个Spring Boot(v2.0.2)应用程序,该应用程序公开了RESTful API,然后该API调用WSDL服务。我已经使用Maven / jaxb插件生成了WSDL类,并且一切都可以在我的开发机上工作。当部署到服务器时,我得到一个错误,即WSDL服务类无法加载基础WSDL文件。问题是,当生成Java类时,它正在使用我的开发机的完整路径(生成的服务类的片段)

try {
        URL baseUrl;
        baseUrl = com.mytest.WSDLService.class.getResource(".");
        url = new URL(baseUrl, "/home/users/me/projects/wsdltest/wsdl/MyWSDL.wsdl");
    } catch (MalformedURLException e) { 

WSDL文件(MyWSDL.wsdl)在我的应用程序的春季启动JAR文件中,位于根目录'wsdl'的子目录中

问题,是否有一种方法可以从JAR文件加载此WSDL,而无需修改生成的类?

理想的解决方案,我希望找到一个不会使我修改生成的文件的解决方案(我们打算针对几种服务进行此操作),理想情况下,我希望有一个可以如果可能的话,在构建时完成(在pom.xml中?)。

尝试过的解决方案

  • 此处的一篇帖子建议在我的pom.xml中使用“ wsdlLocation”标签,并提供WSDL文件的显式路径,例如<wsdlLocation>/wsdl/MyWSDL.wsdl</wsdlLocation>
  • 尝试了此thread
  • 中的大多数解决方案

预先感谢

1 个答案:

答案 0 :(得分:0)

由于这个SO Thread,我想能够找到解决方案。显然,答案取决于在Maven中使用的jaxws工具的版本(jaxws-maven-plugin)。使用这个版本的工具,该项目(我继承了)明确要求版本1.12(调用JAX-WS RI 2.1.7-b01-),我能够使用' classpath:wsdl / MyWSDL.wsdl 在提到的线程中的解决方案。一旦我发现pom使用的是显式版本,我便删除了jaxws的更新(使用JAX-WS RI 2.2.10),但是随后的“ classpath”解决方案停止了工作。我切换到线程' /wsdl/MyWSDL.wsdl '

中提到的另一个选项

我进行了快速测试,这似乎已经解决了问题(在我的开发机和测试站点中)。

谢谢