2011-04-04 2 views
0

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

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

+0

Привет, Почему вы пытаетесь сделать это так? Это абсолютно необходимо, чтобы оба они совместно использовали один и тот же объект сеанса? Сессия предназначена для одного пользователя afaik. – arg20

+0

Тем не менее, каждый объект сеанса может указывать на постоянный объект «Игра». Хотя, я полностью лишен ваших требований, поэтому это предложение является лишь предположением. – arg20

ответ

0

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

+0

спасибо, я попробую это. – PtblDuffy

0

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

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

+0

Для крупномасштабного сайта кластеризованное кэширование - это хорошая идея, но это, кажется, студент. Возможно, более подходящим может быть простой хэш (с некоторым контролем параллелизма)? –

+0

Трудно сказать, но вы правы. Если трафик минимален, то какой-то общий хэш-файл имеет смысл. – squawknull

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