Ответ 1
Создайте @SessionScoped
bean, чтобы удерживать ресурсы (в некоторой коллекции/массиве?) и вставлять их в @ViewScoped
bean, а затем полагаться на @PreDestroy
сеанса bean.
Правда, таким образом ресурсы живут немного дольше, чем вы хотите, но это самое простое и надежное решение, которое вы можете получить. Если вы хотите сохранить @PreDestroy
в области видимости bean, вам нужно как-то убедиться, что конечный пользователь всегда выполняет навигацию по запросу HTTP POST именно в этом представлении с охватом bean. Вы не можете надежно гарантировать, что (компьютер конечного пользователя может упасть и т.д.).