From the docs it is unclear if a @Singleton
bean will be destroyed at some specific point.
I wouldn't rely on that. For instance during Weld.shutdown()
@PreDestroy
method is not called on a @Singleton
.
Use @ApplicationScoped
bean instead, it's functionally the same (except that it's proxied), also available in Java SE and will be 'destroyed' when the application context ends.