Есть ли способ прервать сессионный компонент с состоянием? - PullRequest
0 голосов
/ 27 мая 2011

Этот вопрос в некоторой степени связан с Обработка времени ожидания в EJB3 без использования потоков .

Фон : У меня есть пример операции, которая может заблокироваться во время ее выполнения, и я должен быть в состоянии обработать эту возможность и завершить операцию, если это произойдет. Решение должно быть независимым от сервера приложений, поэтому управляемые контейнером транзакции со значениями тайм-аута не подходят.

Актуальный вопрос : Одна идея для решения, что у меня была операция в состоянии сессионного компонента и использование внешнего метода @Timeout для его мониторинга, но для этого мне нужно иметь возможность прервать или отменить этот компонент сеанса. Есть ли способ сделать это?

1 Ответ

3 голосов
/ 27 мая 2011

В спецификации говорится (§4.3.14):

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

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

...