【问题标题】:CDI Injection into a Servlet not working将 CDI 注入 Servlet 不起作用
【发布时间】:2014-08-30 02:45:39
【问题描述】:

我有一个控制器和一个生产者。

@Named
@SessionScoped
public class UserController{

    private User user;

    //other methods

    @Produces
    @User
    public User produceUser() {
        return user;
    }
}

如果我将用户注入 Servlet,我总是会得到相同的用户(我比较了对象 ID)——也在不同的会话中。如果我在 CDI Bean 中注入用户,它就可以工作并且我得到当前会话的用户。

【问题讨论】:

  • 对 CDI 不是很熟悉,但是 servlet 在许多不同的会话中都存在;你要么需要注入一个选择当前用户的代理,要么注入一个 UserService
  • 请提供更多信息。你在运行什么容器?什么版本的 CDI 等?
  • 你能展示你如何创建一个用户对象和带有注入点的servlet吗?

标签: java servlets cdi session-scope producer


【解决方案1】:

UserController 是会话范围的,但生产者不是。 IE。生产者有@Dependent 范围,所以User bean 在 servlet 初始化时被注入一次。

尝试将@SessionScoped 添加到您的生产者方法中。

【讨论】:

    猜你喜欢
    • 2012-07-29
    • 2018-10-26
    • 1970-01-01
    • 2014-02-17
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2023-04-07
    相关资源
    最近更新 更多