我有泽西(1.17)+ Guice(3.0)+ GAE(1.9.24)Java应用程序。并且@SessionScoped注释不起作用。
我有
@SessionScoped
public class SessionService implements Serializable {
private String login = null;
public void setLogin(String login) {this.login=login;}
public String getLogin() {return this.login;}
}
在控制器中,SessionService
注入为@Inject SessionService sessionService;
appengine-web.xml
(<sessions-enabled>true</sessions-enabled>
)
在本地开发服务器上,当我在2次连续调用中调用setLogin(XX)
和getLogin
时(从同一浏览器窗口访问2次页面),我按预期得到login=XX
。
在GAE上部署时,它会在浏览器中同一窗口的每次访问时创建新的SessionService
实例,从而返回login=null
。因此,它不会在会话中保留登录信息,并且行为不像@SessionScoped
所期望的那样。
为什么不起作用?有没有办法让它发挥作用?