2009-08-18 4 views
2

Мне кажется, что JBoss повторно использует администраторы сущностей и базовые сеансы спящего режима для нескольких запросов. Я проверил тест, который доказывает, что в некоторых случаях состояние объекта может быть устаревшим, даже если оно просто извлекается с использованием em.find().Как заставить JBoss 4.2.3 очистить кэш сеанса спящего режима для каждого запроса?

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

UPD:

Ниже приведен пример случая.

запрос HTTP 1. сессионный компонент создает экземпляр сущности и сохраняет его с поля «A» присвоено значение 1. сохраненное объект получает ID = 4.

запрос HTTP 2. Сеанс боб смотрит объект с ID = 4, устанавливает поле «A» в значение 2 и сохраняет его.

HTTP-запрос 3. Компонент сеанса ищет объект с ID = 4 и проверяет его поле «A». Если значение равно 1, оно делает одно, если оно равно 2, это делает другое.

В случае если EM в запросе 3 оказывается таким же, как в запросе 1, происходит нежелательное поведение. Я проверил это и получил ок. 10% случаев неудачи.

+0

Хм ... зачем вам это нужно? – cletus

+0

Я обновил вопрос на примере, объясняющем почему – artemb

+1

Артем, кажется, вы используете расширенный контекст персистентности (который привязан к жизненному циклу сессионного компонента и, следовательно, будет описывать поведение), но вы хотите, чтобы транзакционная область вместо этого: http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/architecture.html#architecture-ejb-persistctxscope. – ChssPly76

ответ

0

Хорошо, я понял это. JBoss правильно обрабатывает сеансы, была ошибка в моем тесте =) Извините и спасибо за вашу помощь

0

Пробовали ли вы evictingОбъект от Session?

+0

Как и когда (где) вы сделали бы это для достижения цели, о которой я сказал в вопросе? – artemb

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

  • Нет связанных вопросов^_^