Кэширование результата сеанса без сохранения состояния? - PullRequest
1 голос
/ 15 декабря 2009

Мы используем компонент сеанса без сохранения состояния для извлечения некоторых данных из разных мест.

Какой лучший способ добиться кэширования для этой SLSB?

Использование перехватчиков? Используете JBossCache?

Мы используем JBoss 5.0.1.

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

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

Поскольку вы уже используете JBoss Appserver, JBossCache может показаться здесь очевидным победителем. Вы можете сконфигурировать экземпляры JBossCache, используя дескрипторы сервиса jboss, и ваш EJB может затем искать экземпляр кэша из JMX / JNDI. Все это уже включено в JBossAS, поэтому никаких дополнительных зависимостей не требуется.

Использование JBossCache также дает вам дополнительный бонус кеша, распределенного по кластеру, если это что-то вас интересует.

0 голосов
/ 15 декабря 2009

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

void someMethod(StateFulBean sfb){
  Cache cahce = sfb.getCache();
  ...

}

При использовании EBJ 3.1 вы также можете использовать аннотацию Singleton и внедрить кеш как синглтон в ваш сессионный компонент без сохранения состояния.

...