首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web服务- Tomcat -后台代理- wsdl位置

Web服务- Tomcat -后台代理- wsdl位置
EN

Stack Overflow用户
提问于 2012-12-05 05:06:05
回答 1查看 4.4K关注 0票数 3

在我们的内部环境中,我有一个运行在Tomcat上的Java our服务。假设wsdl是

代码语言:javascript
复制
http://actual:8080/app/temp?wsdl

为了提供从网络外部对此we服务的访问,我们在另一台服务器上使用Apache创建了一个代理,并使用ProxyPass执行以下操作

代码语言:javascript
复制
ProxyPass /app/temp http://actual:8080/app/temp

因此,在外部,当我们通过http访问proxy/app/temp时,它会被转换为actual:8080/app/temp。所以这没有问题,而且我还可以访问wsdl。

但是WSDL引用了端口上"webservice location“的”实际“服务器。当从客户端对webservice方法进行实际调用时,这会导致失败。

请您对如何解决这个问题有什么想法?谢谢。

注意:客户端是使用Metro生成的。我找到了一种方法,可以使用下面的代码在客户端中强制使用不同的端点。但我更多的是寻找一种我们可以做到的纯代理解决方案,而不是使用我们的we服务的开发人员必须触摸他们的代码。

代码语言:javascript
复制
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://proxy/app/temp?wsdl");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-05 05:45:53

您可以使用ProxyPreserveHost指令。引用链接中指令部分的内容:

启用时,此选项会将传入请求中的Host:行传递给代理主机,而不是将ProxyPass行中指定的主机名传递给代理主机

因此,您的配置文件中应该包含以下内容:

代码语言:javascript
复制
ProxyPreserveHost On
ProxyPass /app/temp http://actual:8080/app/temp

然后重新启动apache服务器。使用此选项,您将不需要更改web服务相关代码或设置中的任何内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13711907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档