通过HTTPs在IIS后面的JBoss Web服务

时间:2009-11-18 18:41:26

标签: java jboss jax-ws

这是一个纠结的网络,我想,但它确实不应该那么难。让我看看我是否可以画出这幅画:

我已经编写了一个Web服务,从WSDL开始,它将在JBoss中运行。当我在我的本地机器上运行并指向我的Netbeans“客户端生成器”(可能只是使用“wsimport”或其他任何幕后工具)来生成一个按预期工作的客户端时,这一切都很好,花花公子。所有这一切都是通过直接命中端口8080来实现的,而<soap:address>元素看起来是这样的:

<soap:address location="http://localhost:8080/MyoutfitWebService/funService"/>

现在,当这只小狗被部署时,它将通过AJP转发到IIS的请求,我认为,端口8009. IIS处理我们的客户端证书验证,然后应该只是将请求转发到我的Web服务。我无法弄清楚在我的WSDL的<soap:address>元素中使用什么,以便我可以将WSDL URL提供给某人来生成他们自己的客户端。如果我使用:

<soap:address location="https://real.server.com/MyoutfitWebService/funService"/>

当我部署它并指向WSDL时,<soap:address>元素被破坏,看起来像:

<soap:address location="https://127.0.0.1:8443/MyoutfitWebService/funService"/>

有人能告诉我是否需要修改jbossws.sar jboss-beans.xml中的内容或者什么? 我正在使用JBoss Web Services Native 3.0.4。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

我不知道如何在IIS中处理这个问题,但我会写一些关于Apache的注释

我遇到了同样的问题,并使用apache中的mod_ext模块进行了解决方法

您的配置将如下所示

 ExtFilterDefine fixservice mode=output cmd="/bin/sed s/127.0.0.1:8443/real.server.com:443/g"

 <Location "/MyoutfitWebService/services/funService">
      ProxyPass ajp://local.server.com:8009/MyoutfitWebService/funService   
      SetOutputFilter fixservice
 </Location>
 ProxyPass /MyoutfitWebService/funService ajp://local.server.com:8009/MyoutfitWebService/funService

因此,您的“正确”WSDL地址将是

 real.server.com/MyoutfitWebService/services/funService?wsdl 

将有正确的soap:address,

 real.server.com/MyoutfitWebService/funService 

(我删除了https,因为我只能在这里放置一个超链接)。

可能有更好的方法,但遗憾的是我没有时间进行深入调查。这个解决方案正常工作(几分钟前我发现它已经测试过了)

相关问题