用于编组Web服务出站网关的动态提供程序

时间:2015-01-21 11:15:27

标签: spring web-services marshalling spring-integration

是否可以为编组Web服务出站网关设置动态提供程序?

我的意思是,如果我尝试例如:http://100.0.0.1并且它不起作用,我想尝试http://100.0.0.2而不是

我目前的配置:

MarshallingWebServiceOutboundGateway gw = new MarshallingWebServiceOutboundGateway(provider, jaxb2Marshaller(), jaxb2Marshaller());

1 个答案:

答案 0 :(得分:1)

是的,这是真的。由于MarshallingWebServiceOutboundGateway允许注入DestinationProvider,因此您可以随意提供任何自定义实现。

对于您的fault-tolerant用例,您应执行:new URLConnection(url).connect()以测试与DestinationProvider实施的目标服务器的连接。

<强>更新

  

但是,如果我有https凭据,证书或任何类型的安全性,我如何测试新的URLConnection(url).connect()

嗯,Spring Integration的另一个很好的解决方案是load-balancing和同一个DirectChannel的几个订阅者:

@Bean
public MessageChannel wsChannel() {
   return new DirectChannel(null);
}

切换默认RoundRobinLoadBalancingStrategy。 之后你可以有几个@ServiceActivator(inputChannel="wsChannel")。当第一个失败时,消息将被发送到第二个,依此类推,直到每个URL的良好结果或下降。