【发布时间】:2012-12-04 21:06:05
【问题描述】:
在我们的内部环境中,我有一个在 Tomcat 上运行的 Java 网络服务。假设 wsdl 是
http://actual:8080/app/temp?wsdl
为了从网络外部提供对该网络服务的访问,我们使用 Apache 在另一台服务器上创建了一个代理,并使用 ProxyPass 来执行类似的操作
ProxyPass /app/temp http://actual:8080/app/temp
因此,当我们通过 http 在外部访问 proxy/app/temp 时,它会被转移到实际:8080/app/temp 就好了。所以没有问题,我也可以访问 wsdl。
但是 WSDL 对端口上的“webservice 位置”引用了“实际”服务器。当从客户端对 Web 服务方法进行实际调用时,这会导致失败。
请问有什么办法可以解决这个问题吗?谢谢。
注意:客户端是使用 Metro 生成的。我找到了一种使用如下代码强制客户端中的不同端点的方法。但我更多的是寻找我们可以做的纯代理解决方案,而不是使用我们的 web 服务的开发人员必须接触他们的代码。
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://proxy/app/temp?wsdl");
【问题讨论】:
标签: java web-services apache proxy