java – 将SOAP Web服务请求重定向/转发到另一个Web服务

我有一个用例,如果SOAP请求没有针对NewWebService的XSD和WSDL进行验证,则需要对NewWebService的所有调用都路由到OldWebService. NewWebService位于ServerA上,OldWebService位于ServerB上.

抽象地说,我知道我需要一些机制来允许我接受命中NewWebService的SOAP请求,将其发送到OldWebService,然后将SOAP结果返回给客户端.我对spring-ws的有限经验使得很难决定如何实现这一目标.

我的第一个想法是在NewWebService中构建一个SOAP客户端,只要无法验证有效负载,就会调用OldWebService.这是最好的解决方案,还是有更好的方法允许NewWebService充当某些请求的传递?

最佳答案
我的解决方案是编写一个自定义SoapRequestFilter,它实现了一个javax.servlet.Filter和一个扩展HttpServletRequestWrapper的新类.由于HttpServletRequestWrapper实现了HttpServletRequest接口,因此扩展包装器允许您复制HttpRequest并对流进行操作,而不会消耗对象并导致下游问题.

一旦我有了过滤器和包装器,我就能够从HttpRequest解析端点和有效负载.如果需要重定向请求,我为旧的SOAP WebService创建了一个新的HttpUrlConnection,并将该响应的InputStream设置为HttpResponse的OutputStream.

转载注明原文:java – 将SOAP Web服务请求重定向/转发到另一个Web服务 - 代码日志