7

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 のコンテキストの状態 (アクティブかどうか) を知る良い方法はありますか?

4

1 に答える 1

5

いいえ、CDI 1.0 の唯一のオプションは、ContextNotActiveException をキャッチすることです。

あなたのソリューションはうまくいくはずです。

スコープの実装はインジェクションに使用できないため、これは実際には問題になります。

たとえば、CDI 自体の実装の詳細を知らずにそのクラスにアクセスすることはできないため、メソッド@Inject RequestScopedContextImpl rq;をチェックすることはできません。rq.isActive()

于 2012-07-18T14:57:45.340 に答える