【问题标题】:How do I get a ConversationScoped CDI bean from inside a Filter?如何从过滤器中获取 ConversationScoped CDI bean?
【发布时间】:2013-09-05 09:47:33
【问题描述】:

从过滤器中获取@SessionScoped CDI bean 是relatively easy。但是尝试注入 @ConversationScoped bean 会引发以下错误:

org.jboss.weld.context.ContextNotActiveException:
WELD-001303 No active contexts for scope type javax.enterprise.context.ConversationScoped

这与对话当前是否处于活动状态无关。似乎 CDI 无法确定是应该使用瞬态对话还是活动对话,因为我的过滤器发生在为 @ConversationScoped bean 提供上下文之前。

可以使用什么样的过滤器/拦截机制来“足够晚”发生?

【问题讨论】:

    标签: java cdi servlet-filters conversation-scope


    【解决方案1】:

    我不确定其他实现如何做到这一点,但至少 Weld 使用过滤器本身来处理对话,因此您的过滤器需要位于过滤器链中的那个之后。

    【讨论】:

    • 由于问题似乎没有令人满意的解决方案,我会接受你的回答。
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2013-03-03
    • 2013-04-18
    • 2011-12-24
    • 2011-07-12
    • 2011-12-14
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多