[
https://issues.jboss.org/browse/CDI-601?page=com.atlassian.jira.plugin.sy...
]
Martin Kouba commented on CDI-601:
----------------------------------
Yes, sounds better. Maybe even {{ApplicationStopped}}?
bq. My original notion was for @ApplicationScoped beans not to be destroyed while other
beans still hold contextual references to them...
This might be pretty complext, if even possible for non-inject cases
({{BeanManager.getReference()}}, {{Instance.get()}}) and unmanaged contextual instances.
What I had in mind when creating this ticket was that it might be useful to introduce some
generic event fired *when an application is stopped before all contexts are destroyed* and
which would allow a bean to perform cleanup using the dependencies, i.e. fired before
{{@PreDestroy}} and {{(a)Destroyed(X.class)}}. [~chrisjr] WRT your use case - your
"@Dependent worker bean" would just observe {{ApplicationStopped}} and do all
the cleanup ({{@ApplicationScoped}} beans would not be destroyed yet).
{code:java}
@Dependent
class Worker {
@Inject
Service service;
void shutdown(@Observes ApplicationStopped event) {
// At this point Service is not destroyed yet, nor is its @PreDestroy called
service.doSomeStuff();
}
}
@ApplicationScoped
class Service {
@PreDestroy
void destroy() {
// Perform local cleanup
}
void doSomeStuff() {
}
}
{code}
Add container lifecycle event fired before container destroys all
contexts
--------------------------------------------------------------------------
Key: CDI-601
URL:
https://issues.jboss.org/browse/CDI-601
Project: CDI Specification Issues
Issue Type: Feature Request
Reporter: Martin Kouba
Fix For: 2.0 (discussion)
The name might be something like {{BeforeContainerShutdown}}. Note that we probably
cannot change the name or semantics of {{BeforeShutdown}}, which is fired after container
destroys all contexts. The motivation is to allow the beans to perform some kind of
cleanup before dependencies could be disposed (the ordering of destruction is not
defined).
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)