У меня есть два веб-приложения Java 8, развернутые в Tomcat 7, которые должны взаимодействовать.Приложение A имеет несколько экземпляров (несколько рабочих Tomcat, A1... An
), которые сбалансированы по нагрузке, а приложение B имеет один экземпляр.В настоящее время A может инициировать связь с B через веб-сервис SOAP, предоставляемый B, через HTTP через localhost.
B теперь нужно инициировать связь со всеми экземплярами A. Поскольку A сбалансирован по нагрузке, B не может использовать HTTP, потому что к A1... An
все обращаются через один и тот же URL, и B не может контролировать, какой экземпляр получит его запрос.
Идеальное решение может быть похоже на соединение через веб-сокет - каждый экземпляр A будет устанавливать постоянное соединение с B, а B будет передавать данные каждому «подписчику».
Учитывая, что
- и A, и B являются приложениями Java 8
- оба развернуты в одной и той же установке Tomcat, и
- не требуется для приложений не-Java для связи сB
Есть ли стратегия, которая удовлетворяет этому требованию?
Я знаю, что RMI доступен, но я не знаю, поддерживает ли он мои требования.В RMI потребуется B предварительное знание каждого экземпляра A и способ их уникальной идентификации?Может ли дуплексное соединение быть установлено каждым экземпляром A, чтобы избежать B, требующего каких-либо знаний об A?