有没有办法在不捕获 ContextNotActiveException 的情况下知道状态是否处于活动状态?

2024-04-12

我想知道是否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 中上下文的状态(活动或非活动)?


不,我们在 CDI 1.0 中唯一的选择是捕获 ContextNotActiveException。

您的解决方案应该有效。

这实际上最终成为一个问题,因为范围实现不可用于注入。

例如。你不能只是@Inject RequestScopedContextImpl rq;并检查rq.isActive()方法,因为如果不知道 CDI 本身的实现细节,我们就无法访问该类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在不捕获 ContextNotActiveException 的情况下知道状态是否处于活动状态? 的相关文章

随机推荐