@PreDestroy никогда не вызывал @ViewScoped
У меня есть @ViewScoped
боб, который имеет метод с @PreDestroy
аннотация, которая должна обеспечить закрытие некоторых удаленных подключений. Однако метод не вызывается, когда пользователь уходит.
Что-то можно сделать неправильно? Нужно ли что-нибудь регистрировать, чтобы это работало?
Это простой публичный метод (void
) это не исключение.
Я использую JSF 2 (MyFaces) с Tomcat 7.0.12. Может ли это быть проблемой с Tomcat?
ОБНОВИТЬ
@PostConstruct
аннотация работает отлично.
1 ответ
Это известная проблема, которая, к сожалению, не тривиальна для решения, не позволяя осуществлять всю навигацию по рассматриваемому компоненту вида. См. Также выпуск JSF-impl 1839. Это не распространяется только на случаи, когда пользователь изменяет URL-адрес в адресной строке браузера или закрывает окно / вкладку. Их @PreDestroy
также не будет вызываться, когда сеанс будет уничтожен. Однако был опубликован запрос на усовершенствование спецификации, чтобы заставить висячие представления уничтожать во время уничтожения сеанса в любом случае: JSF-spec проблема 905.