gpt4 book ai didi

java - JAX-WS RI 生成带有硬编码文件路径的代码?

转载 作者:行者123 更新时间:2023-11-30 04:15:53 25 4
gpt4 key购买 nike

我继承了一个代码库,其中一部分是使用 Eclipse 生成器构建的 Web 服务。生成的代码似乎有许多文件路径(用于 wsdls 等),它们引用原始开发人员盒子上的位置。例如,在服务类的静态构造函数中:

url = new URL(baseUrl, "file:/C:/Users/OldDeveloperName/workspace/ServiceProject/WebContent/WEB-INF/edmo/AXIS-1-4/MainEntityService-1.0.wsdl");

在我天真的看来,这似乎是一件坏事。这是 a) 可以,还是 b) 可以修复吗?我知道我现在可以编辑它,但是有相当多的服务文件,如果这是一个常见问题,似乎很容易纠正。我的意思是,就我而言,它甚至看起来都无法部署。

最佳答案

原始开发人员显然遵循了在本地存储 WSDL 的方法,这实际上是一个很好的实践。也就是说,JAX-WS 客户端在执行之前需要从原始位置再次检索 WSDL 以检查其他元数据等(听起来很奇怪,但这就是它的工作原理)。但是,如果原始 WSDL 不再可用或者 Web 服务开发人员使用例如 WSDL 更新了 WSDL,该怎么办?新方法?您的 Web 服务调用将不会被执行,这可能不是您想要的。因此,人们开始将 WSDL 与其客户端存储在一起,以避免 WSDL 可用性/更改方面的漏洞。

Is this a) OK, or b) fixable?

将 WSDL 存储在本地文件系统上是不行的,这就是原始开发人员犯下的巨大错误。 WSDL 应与 Web 服务客户端打包在一起(在同一个 JAR 中)并直接从存档中检索。有多种方法可以在本地检索 WSDL,请参阅 this tutorial以获得指示。不管怎样,您要么编辑 WSDL 位置,要么完全更改旧代码:)

引用文献:

关于java - JAX-WS RI 生成带有硬编码文件路径的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com