У меня есть следующие требования
- Несколько JAR-файлов. На каждом работает встроенный Jetty.
- Запускайте всех на одном домене/порте — используя обратный прокси (Apache)
- JAR может иметь несколько экземпляров, работающих на разных машинах (но на одном хосте/порте).
- Полное разделение сеансов — абсолютно никакого обмена даже между двумя экземплярами одного и того же веб-приложения.
- Масштабируйте все это динамически.
- Я не знаю, актуально ли это, но я знаю, что Spring Security используется в некоторых из этих веб-приложений.
Я все заработал, добавив правила обратного прокси и перезапустив Apache. Вот упрощенное описание двух экземпляров для webapp-1 и двух экземпляров для webapp-2.
http://mydomain.com/app1 ==> 1.1.1.1:9099
http://mydomain.com/app2 ==> 1.1.1.1:9100
http://mydomain.com/app3 ==> 1.1.1.2:9099
http://mydomain.com/app4 ==> 1.1.1.2:9100
После успешной (почти) настройки мы видим проблемы с файлом cookie JSESSIONID. Каждое приложение переопределяет файлы cookie других, а это означает, что нам еще предстоит добиться полного разделения сеансов, поскольку одно влияет на другое.
Я много читал об этой проблеме в Интернете, но решений никогда не бывает достаточно в моем сценарии.
ИДЕАЛЬНЫМ решением для меня было бы определить JETTY для использования какого-то UUID для имени файла cookie. Я до сих пор не могу понять, почему это не по умолчанию.
Я бы даже пошел на решение JavaScript. Преимущество JavaScript в том, что он может видеть URL-адрес после обработки ReverseProxy. Итак, для http://mydomain.com/XXX
я могу определить имя файла cookie как XXX_JSESSIONID
.
Но я не могу найти руководство по ним.
Итак, как я могу решить эту проблему и получить полное разделение сеансов?