繁体   English   中英

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

[英]Load WSDl file from Spring Boot jar file?

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

问题我正在编写一个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>
  • 尝试了该线程的大多数解决方案

提前致谢

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

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

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM