JSF, Хранение данных в Session против JPA L2 кеширования - PullRequest
1 голос
/ 16 марта 2012

Я занимаюсь разработкой веб-приложения на JAVA EE 6 с помощью SEAM 3, используя полный профиль Glassfish 3, JSF на внешнем интерфейсе.Мой главный вопрос заключается в том, что у каждого пользователя, вошедшего в систему, есть почтовый ящик, почти как Facebook, который постоянно обновляется через ajax. Теперь мой вопрос.Пока у меня есть bean-компонент CDI @SessionScoped @Named, в котором хранятся сообщения, поэтому я раздуваю сеанс пользователя, сохраняя все его сообщения здесь, в конечном итоге они синхронизируются.Я мог бы также вызвать службу EJB, которая получает входящие сообщения для каждого пользователя каждый раз, когда вызывается запрос ajax, и надеюсь, что он будет использовать кэш для загрузки оттуда сообщений вместо того, чтобы заполнять мою базу данных запросами на запрос ajax.У меня вопрос, должен ли я сделать это:

В моем cdi bean:

public List<Message> getInbox() {
  return inbox; //where inbox is a field that holds all the messages
}

или это:

public List<Message> getInbox() {
  return messagingService.findInbox(userdId); //stub to stateless EJB fetching the inbox
}

Другими словами, я должен хранить входящиев сеансе или просто получить его каждый раз?(Учтите, что я буду использовать опрос ajax, и у меня будет примерно 10 запросов в минуту на пользователя)

1 Ответ

4 голосов
/ 16 марта 2012

Кеш JPA применим к аудитории всего приложения, а сеанс HTTP применим только к сеансу клиента. Другими словами, данные в области сеанса дублируются для каждого отдельного клиента. Это на самом деле не кеш, это только перебор памяти. Используйте область сеанса только для реальных данных области сеанса, таких как вошедший в систему пользователь, его настройки и т. Д.

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