我们已经在Liberty服务器上部署了我们的Web服务。之前它是在IBM WAS上。在Liberty中部署之后,我们知道Web服务是在CXF Web服务框架上运行的。在WAS中,它是Axis框架。另一个不同之处是,在wsdl url和内容中发生了变化。旧的wsdl url是http://localhost:8080/Hello/HelloServices/Helloservices.wsdl,它包含xsd模式定义。
在上面的自由服务器中,wsdl url不工作,并且没有找到抛出文件。但是如果我们尝试调用http://localhost:8080/Hello/HelloServices?wsdl,它就工作了。
有没有人能告诉我为什么旧的url在新的服务器上不工作。是因为服务器还是服务器中内置的cxf框架。
另一个团队正在使用wsdl url来使用此Web服务,但使用此新url无法实现此功能。
如有任何想法或建议,我们将不胜感激。
提前致谢
1条答案
按热度按时间ubof19bj1#
其主要原因是不同WebSphere概要文件所使用的JAX-WS实现发生了变化。不幸的是,硬编码WSDL url以在多个位置附加
?wsdl
,因此这是不可能在配置中更改的。最简单的解决方案是添加ServletFilter以检查http://localhost:8080/Hello/HelloServices/Helloservices.wsdl
的传入请求url,然后将请求重定向到http://localhost:8080/Hello/HelloServices/Helloservices?wsdl
。这里有一个很好的SO帖子,展示了如何编写一个ServletFilter来重定向:
How to use a servlet filter in Java to change an incoming servlet request url?
另一个选项是让客户端更新其代码或配置,以说明对WSDL URL的更改。