3

到目前为止,我看到的所有 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

现在的问题是:

  1. 这是这样做的标准方式吗?
  2. CXF 中是否有标准(或推荐的方式)?
  3. 还是由开发人员决定?
4

1 回答 1

1

在许多情况下,Web 服务将具有一个生产 URL 和一个测试/QA/UAT URL。开发人员将针对测试 URL 进行开发,然后一旦准备好投入生产,他将切换 URL 以指向生产。

由开发人员决定如何完成,并且没有标准的处理方式。

于 2013-05-23T20:00:22.617 回答