Java EE использовать сессионный компонент с сохранением состояния для 2 пользовательских сессий? - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь построить Java-игру на основе веб. Мне было интересно, как можно использовать экземпляр сессионного компонента с состоянием для двух пользователей. Моя игра будет для двух игроков, и мой профессор сказал, что самый простой способ сделать это - дать HttpSession обоих игроков ссылку на один и тот же сессионный компонент с состоянием, но после нескольких поисков в Google я не могу понять, как найти один и тот же компонент для двух людей вместо создания нового.

Спасибо за любой вклад, -Duffy

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

Полагаю, вы могли бы сохранить ссылку на компонент в области приложения (например, getServletContext (). SetAttribute (...)), и две сессии Http могли использовать ее по общему ключу.Однако, если это кластер с несколькими серверами, сервер приложений должен поддерживать распространение атрибутов на разные серверы.

0 голосов
/ 04 апреля 2011

Вы должны как-то делиться ссылкой на компонент между двумя HttpSessions.Это легче сказать, чем сделать, особенно если вы работаете на нескольких серверах.Если бы вы работали на одном сервере, вы могли бы теоретически поместить ссылку в статическую хэш-карту.

Однако, как бы вы ни пытались это сделать, я бы, вероятно, рекомендовал бы использовать решение для совместного кластерного кэшированиякак memcached, JBoss Infinispan, Terracotta и т. д.).Похоже, что он выходит из предполагаемого варианта использования для сессионных компонентов с сохранением состояния, так что вы можете направиться к какой-то опасной территории, и может фактически нарушить спецификацию (я не уверен в этом).Попробуйте использовать технологию, предназначенную для такого общего состояния в кластере (например, предложенные выше решения для кластерного кэширования).

...