我继承了一个代码库,其中一大块是使用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)可以修复?我知道我现在可以编辑它,但是有很多服务文件,如果它是一个常见的问题,它似乎很容易纠正。我的意思是,因为它甚至看起来都不适合我。
答案 0 :(得分:2)
原始开发人员显然遵循了在本地存储WSDL的方法,这实际上是一种很好的做法。也就是说,JAX-WS客户端在执行之前需要再次从原始位置检索WSDL以检查其他元数据等(听起来很奇怪,但这就是它的工作原理)。但是,如果原始WSDL不再可用或者Web服务开发人员用例如WSDL更新了WSDL,那该怎么办?新方法?您的Web服务调用将不会执行,这可能不是您想要的。因此,人们开始将WSDL与其客户端一起存储,以避免WSDL可用性/更改的漏洞。
这是a)好吗,还是b)可以修复?
将WSDL存储在本地文件系统上并不行,这就是原始开发人员犯了大错的地方。 WSDL应与Web服务客户端(在相同的JAR中)打包在一起,并直接从存档中检索。有几种方法可以在本地检索WSDL,有关说明,请参阅this tutorial。无论如何,您将编辑WSDL位置或完全更改旧代码:)
参考文献: