1

我继承了一个代码库,其中一部分是使用 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) 可修复的?我知道我现在可以编辑它,但是有很多服务文件,如果这是一个常见问题,似乎很容易更正。我的意思是,对于我来说,它甚至看起来都无法部署。

4

1 回答 1

2

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

这是 a) 好的,还是 b) 可修复的?

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

参考:

于 2013-08-25T11:43:55.360 回答