基于Mules模式的Web服务代理配置(模式:web-service-proxy)支持自动重写远程WSDL。但这究竟是如何运作的?
远程URL通常通常根据这样的模式构建:
http://host1.domain.com:8080/ServicePath
在我看到的示例中,带有域部分的主机名被自动重写为托管服务器的主机名/机器名(没有域部分),如:
http://host2:8080/ServicePath
“自动重写”功能是否支持处理主机名的域部分,或者这是否超出了此功能的范围?
答案 0 :(得分:1)
web-service-proxy
尝试使用出站端点的地址作为源并将正在进行的请求的地址作为目标来重写地址。它还尝试处理包含localhost的WSDL的罕见情况,并用InetAddress.getLocalHost().getHostName()
替换它们。
因此,如果使用http://host1.domain.com:8080/ServicePath?wsdl
访问代理的WSDL且远程Web服务地址为http://remote.acme.com/service
,则代理会将WSDL中找到的http://remote.acme.com/service
重写为http://host1.domain.com:8080/ServicePath
。< / p>
但如果使用http://host1:8080/ServicePath?wsdl
访问相同的服务,那么您将在WSDL中获得http://host1:8080/ServicePath
。
总结:它都基于调用者的URL,除非WSDL包含localhost
个URL(不应该是这种情况)。