焊接将HttpSession注入会话范围的bean是null

时间:2013-03-27 11:36:02

标签: java gwt jetty cdi weld

我正在使用Weld 2.0在Jetty 6.1上运行GWT应用程序。 得到下一个代码:

    @SessionScoped
    public class SessionContext implements Serializable {

        @Inject
        private HttpSession httpSession;

        public SessionContext() {
            super();
            //at this point httpSession is null
        }
    }

我错过了什么,为什么不注入HttpSession?参考文献说Injecting the HttpSession will force the session to be created.

2 个答案:

答案 0 :(得分:1)

更改

的定义
public SessionContext() {
        super();
        //at this point httpSession is null
}

public SessionContext(HttpSession httpSession) {
        super();
        this.httpSession = httpSession;
        //check session here
}

也使用构造函数注入

否则为httpSession

提供setter方法

答案 1 :(得分:0)

最好使用@PostConstruct注释其他方法,here

  

初始化托管bean指定生命周期回调方法   CDI框架应该在依赖注入后调用但是   在课程投入使用之前。

这正是您完成注射的地方,但没有调用任何代码。

像这样:

@PostConstruct
public void doMyStuff() {
  //feel free to access your injections here they are not null!
}