编组 Web 服务出站网关的动态提供者

Dynamic provider for a Marshalling web service outbound gateway

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

我的意思是,如果我尝试使用 http://100.0.0.1 and it not works, I would like to try http://100.0.0.2 而不是

我目前的配置:

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

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

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

更新

But If I how can I test new URLConnection(url).connect() if I have https credentials, certificate or any kind of security

好吧,Spring 集成的另一个很好的解决方案是 load-balancing 和多个订阅者相同 DirectChannel:

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

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

的好结果或失败