I would like to know if the RequestScoped
context is currently active in a method or not.
At the moment, here is what I do :
@Inject private BeanManager beanManager;
public boolean isRequestScopeActive() {
try {
if (beanManager.getContext(RequestScoped.class).isActive()) {
return true;
} else {
return false;
}
} catch (final ContextNotActiveException e) {
return false;
}
}
I think it's a bit heavy to catch a ContextNotActiveException
just to know if a scope is active or not.
Do you have any better way to know the state (active or not) of a context in CDI ?
No, the only option we have in CDI 1.0 is to catch the ContextNotActiveException.
Your solution should work.
This actually ends up being a problem because scope implementation is not available for injection.
E.g. You can't just @Inject RequestScopedContextImpl rq;
and check the rq.isActive()
method, because we don't have access to that class without knowing the implementation details of CDI itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With