Вопрос о запуске приложения в кластере более важен и актуален, чем отсутствие JSF.
Требование, налагаемое кластером на любое решение, заключается в том, что решение требует использования общего хранилища, доступного для всех участников кластера. Есть несколько возможных решений, которые отвечают этому требованию:
- Использование базы данных для хранения списка всех зарегистрированных пользователей (с идентификатором для идентификации их сеанса; можно использовать JSESSIONID, но лучше использовать идентификатор, который гарантированно будет уникальным для всех участников кластера). ). Подойдет даже комбинация идентификатора пользователя и идентификатора члена кластера. Это самый простой способ, но он потребует от вас проверить, как ваш код обрабатывает аварийное переключение (вам может потребоваться обновить записи в базе данных при аварийном переключении сеанса).
- Использовать контекст приложения (ServletContext). Это возможное решение, но не рекомендуется вообще. Хотя контекст приложения должен постоянно обновляться во всех элементах кластера, необходимо регулярно обновлять содержимое (увеличенный сетевой трафик среди участников кластера).
- Используйте распределенное решение для кэширования, такое как Terracotta или Coherence. Это решение почти такое же, как и предыдущее, за исключением того, что «карта» сеанса не будет управляться в ServletContext. Сетевой трафик обязательно должен возникать при обновлении распределенного кэша.