【问题标题】:Redirect/Forward SOAP Web Service Requests to another Web Service将 SOAP Web 服务请求重定向/转发到另一个 Web 服务
【发布时间】:2012-05-03 15:10:59
【问题描述】:

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

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

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

【问题讨论】:

标签: java web-services soap spring-ws


【解决方案1】:

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

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

【讨论】:

  • 您是否在任何地方共享此代码?我很想看看你的实现。
  • 你能分享我需要做同样事情的解决方案吗?
【解决方案2】:

我认为 Apache Camel 可以有效地帮助您。

您可以看一下它的代理示例,它很简单,很容易满足您的要求。

http://camel.apache.org/cxf-proxy-example.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多