我的环境的前提:我在 Spring 3 上运行,使用 spring-ws 来处理所有 SOAP 需求。我已经与不同的供应商进行了多次集成,没有这方面的问题。
问题:这个最近的集成有一个供应商运行非常古老的东西,他们的 WSDL 使用 rpc 绑定样式。不用说,JAXWS 并不完全支持 rpc(这是正确的,因为它是互操作的对立面)。
可能的解决方案 #1:我仍然可以尝试使用 Axis 1 在他们的 WSDL 上生成存根。事实上我已经这样做了,但是我非常不愿意将 Axis 依赖项引入我的 pom.xml 中。我很确定会有大量的库冲突,可能会破坏目前非常稳定的环境。
可能的解决方案#2:我可以尝试将他们的 WSDL 重写为 JAXWS 能够解析的文档/文字。遇到一些实际重写 WSDL 的问题(Getting "Schema descriptor {xxx}xxx in message part "xxx" is not defined and could not be bound to Java")。此外,如果他们的端点专门检查 rpc,无论如何我都搞砸了。
可能的解决方案#3:我可以部署一个全新的盒子,专门运行 Axis 和这个服务客户端。即主项目对该框进行 REST 调用,该框发出 SOAP 请求并解析响应。这样做似乎是一种非常非常愚蠢的方式(并且对于应该很简单的事情进行了大量的工作)。
我错过了任何解决方案吗?此外,我一直在为此搜索谷歌,虽然有些人在#1 方面取得了成功,但没有人真正谈论过之后的后果。(即处理 Axis 的遗留依赖项,尝试让 Axis 在 Spring 3 中发挥出色,等等)