2015-01-21 2 views
0

Возможно ли установить динамический провайдер для исходящего шлюза Marshalling?Динамический поставщик исходящего шлюза Marshalling web-сервиса

Я имею в виду, если я стараюсь, например: http://100.0.0.1 и это не работает, я хотел бы попробовать http://100.0.0.2 вместо

Моя текущая конфигурация:

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

ответ

1

Да, это правда. Поскольку MarshallingWebServiceOutboundGateway позволяет вводить DestinationProvider, вы можете предоставить любую пользовательскую реализацию.

Для вашего fault-tolerant прецедента необходимо сделать: new URLConnection(url).connect(), чтобы проверить подключение к целевому серверу в том, что ваша реализация DestinationProvider.

UPDATE

Но если я, как я могу проверить новый URLConnection (URL) .Подключать(), если у меня есть учетные данные по протоколу HTTPS, сертификат или любой вид безопасности

Ну, еще хорошее решение от весенней интеграции составляет load-balancing и несколько подписчиков на то же самое DirectChannel:

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

для переключения по умолчанию RoundRobinLoadBalancingStrategy. И после этого у вас может быть несколько @ServiceActivator(inputChannel="wsChannel"). Когда первый из них терпит неудачу, сообщение отправляется ко второму и т. Д. До получения хорошего результата или падения для каждого URL-адреса.

+0

В моей конфигурации я создаю шлюз в качестве компонента с: «@Bean @ServiceActivator» MessageHandler wsOutboundGateway(). Если я установил другой шлюз, как я могу определить, какой bean-компонент должен быть выполнен? У вас есть пример DestinationProvider? – crm86

+0

Если у вас есть несколько '' wsOutboundGateway' 'Bean' 'с' @ ServiceActivator' для разных URL-адресов, вы должны использовать '@ Router' вверх по течению, чтобы определить, какой URL-адрес доступен сейчас. –

+1

Но если я могу проверить новый URLConnection (url) .connect(), если у меня есть учетные данные https, сертификат или любой вид безопасности. – crm86

Смежные вопросы