2010-09-22 2 views
1

Несмотря на то, что я был в Java SE уже довольно давно, я начал использовать EE & web w/Java только месяц назад, поэтому простите, если вопрос кажется немного noobish ...Java EE - использование одного и того же объекта с сохранением состояния для нескольких пользователей

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

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

EDIT: Извините, я не упоминал об этом раньше - используя Glassfish, EE6.

ответ

-1

решаемая. Поделился ею с помощью ServletContext, который, как я думал, не будет работать, потому что FacesServlet является отдельным, подумал, что он также похож на другой контейнер.

+0

Пожалуйста, объясните более подробно, как именно вы его решили. – Mike

+0

@Mike Вопрос уже более 2 лет, даже не помню, о чем он. :) Посмотрим, смогу ли я получить приличную рецензию за выходные, хотя, спасибо за это. – TC1

0

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

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

Here вы можете увидеть обучающую управления бизнес-процессами Шов

Примечание Шов использует JBoss BPM за кулисами, чтобы обрабатывать его контекст бизнес-процессов. Если вы просто хотите использовать простые возможности JBoss BPM, вы можете увидеть, как here интеграции с JBoss

Смотрите также JBoss BPM User guide

+0

К сожалению, я должен был упомянуть об этом в сообщении в начале - я использую Glassfish и хочу остаться таким образом, потому что я уверен, что должен быть способ сделать это на GF как хорошо ... – TC1

+0

@ TC1 посмотрю. Одним из подходов может быть сохранение объекта Stateful в контексте приложения (поскольку контекст сеанса - * для пользователя *) с уникальным идентификатором, назначенным для идентификации игры –