到目前为止,我看到的所有 WSDL 都使用localhost来描述服务地址。例如:
<wsdl:service name="SQLService">
<wsdl:port name="SQLServiceSoap" binding="tns:SQLServiceSoap">
<soap:address location="http://localhost:8080/rservice/services/SQLServiceSoap" />
</wsdl:port>
</wsdl:service>
但是,当此类服务的客户端运行时,它以某种方式知道该服务的真实 URL 在哪里,即使在远程机器上运行!
CXF 是如何发挥这种“魔力”的?
IOW,在不是运行服务的机器上的测试机器上的客户端 JAR 如何知道该服务器的位置及其地址?
我grep
编辑了源代码并strings
编辑了客户端的 jar 文件,但没有发现任何对服务器 URL 的跟踪。
那么这是如何工作的呢?
更新:在我超自然的侦探工作中,我刚刚在客户端的JAR 文件config.xml
所在的目录中找到了一个名为的文件。其中包含实际服务器的 URL 。因此,在我继承的项目的特定情况下,这似乎就是这样做的。config.xml
现在的问题是:
- 这是这样做的标准方式吗?
- CXF 中是否有标准(或推荐的方式)?
- 还是由开发人员决定?