栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用jax-ws调用位于负载均衡器上的Web服务会返回http状态302,但是当我使用SoapUI时,它可以正常工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用jax-ws调用位于负载均衡器上的Web服务会返回http状态302,但是当我使用SoapUI时,它可以正常工作

因此,经过大量调查,我终于弄清了问题所在。一切都归结于从http重定向到https。从我在网上找到的文章(不再记得网址) 来看 ,由于安全原因,
wsdl2javawsimport 存根生成器用来进行Web服务通信的库不允许使用HTTP到https重定向。

因此,即使我从https
wsdl位置即生成了存根。https://wsdl.location.com?wsdl,当我运行代码进行网络服务调用时,它正试图调用http://wsdl.location.com,从而导致对https:/的重定向请求/wsdl.location.com,但是http库不允许这样做。因此,它只是将302
http代码转发为异常。

另外,有两个Web服务URL。一个是正​​常的http url测试服务,然后是通过https的生产服务器。因此,要解决此问题,我 要做的就是
通过使用 BindingProvider
类动态配置服务以使用我指定的端点(现在是https地址)。这也使我可以根据要调用的环境即时指定使用测试URL还是生产URL。

NotificationWebService service = new NotificationWebService();NotificationWebServiceSoap serviceSoap = service.getNotificationWebServiceSoap();BindingProvider bindingProvider = (BindingProvider) serviceSoap;bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://wsdl.location.com");String xmlString = serviceSoap.getRSAPublicKeyXMLString();

简而言之,如果有人遇到此问题。确保您需要指向的终点是否在https上,是否在进行直接https调用,而不是将要求进行https重定向的http调用。您可以在调试时通过检查
serviceSoap 进行检查。它将说出正在调用哪个URL。

我没有考虑或不选择配置 wsdl2javawsimport
来生成存根并强制存根使用https调用,因此我可以为不同的环境配置多个URL端点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号