有没有办法知道,如果一个国家处于活动状态,不会夹住ContextNotActiveException

2019-07-30 11:23发布

我想知道,如果RequestScoped背景下,目前的方法或不活跃。

目前,这里是我做的:

@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;
    }
}

我认为这是一个有点沉重赶上ContextNotActiveException只知道如果一个范围激活。

你有什么更好的办法知道的状态CDI上下文(有效与否)?

Answer 1:

是的,我们在CDI 1.0唯一的选择就是抓住ContextNotActiveException。 这实际上最终是为范围的应用,其中范围的实现是不可用于注射的一个大问题。 例如,你不能只是@Inject RequestScopedContextImpl rq; 并检查.isActive()方法,因为我们没有获得该类不知道实现细节。



文章来源: Is there a way to know if a state is active without catching ContextNotActiveException?