Java EE - использование одного и того же объекта с состоянием для нескольких пользователей - PullRequest
1 голос
/ 22 сентября 2010

Несмотря на то, что я уже достаточно давно в Java SE, я начал EE & web с Java только около месяца назад, так что извините, если вопрос кажется немного дурацким ...

Итак, вот ситуация: я пытаюсь написать многопользовательскую игру на основе JS с взаимодействием в реальном времени (скажем, в этом примере шахматы, хотя на самом деле не имеет значения, какая это конкретная игра, может быть теннисом). или когда-либо). Клиенты будут взаимодействовать с сервером через JS-вызовы, отправлять ход и т. Д. Теперь, хотя я мог просто получить ход от одного клиента и передать его другому игроку, не поддерживая состояние игры на сервере, это означало бы поставить Огромный выход с надписью "приветствуются пользовательские JS-скрипты" (и это не из опыта - сам "взломал" такую ​​хрень). Это подводит меня к моей проблеме - как разделить объект с состоянием между несколькими сеансами? Одна идея, которая пришла в голову, была синглтоном, хранящим Hashmap с состоянием bean-компонентов, и тогда каждая сессия могла получить bean-компонент по его хешу, но я не знаю, насколько это правильно (и это кажется довольно сложным для довольно распространенной вещи, подобной этой ). Привязка к области применения также кажется излишней ...

P.S. Я понимаю, что объект должен был бы управлять параллелизмом и т. Д., Я просто не могу понять, как сделать его доступным ...

РЕДАКТИРОВАТЬ: Извините, я не упомянул об этом раньше - используя Glassfish, EE6.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

решаемая. Разделили его через ServletContext, который я изначально думал, что не сработает, потому что FacesServlet - это отдельный объект, хотя он тоже может выглядеть как другой контейнер.

0 голосов
/ 22 сентября 2010

У вас есть сценарий бизнес-процесса, который определяется в соответствии с документацией платформы Seam следующим образом

Бизнес-процесс охватывает несколько взаимодействий с несколькими пользователями, поэтому это состояние совместно используется несколькими пользователями, но четко определенным образом . Текущая задача определяет текущий экземпляр бизнес-процесса, а жизненный цикл бизнес-процесса определяется извне с использованием языка определения процесса, поэтому специальных разметок для разграничения бизнес-процессов нет.

Здесь вы можете увидеть учебное руководство по управлению бизнес-процессами Seam

Обратите внимание: Seam использует JBoss BPM за кулисами для обработки контекста своего бизнес-процесса. Если вы просто хотите использовать простые возможности JBoss BPM , вы можете посмотреть здесь как интегрировать с JBoss

См. Также Руководство пользователя JBoss BPM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...