我有一个使用JSF 2.2构建并部署在WebLogic 12.2.1.1。上的Web应用程序。
我已在web.xml中将会话超时设置为480,以使其保持活动状态至少8小时。
<session-config>
<session-timeout>
480
</session-timeout>
</session-config>
但是,当我的Web应用程序保持空闲状态时,它仍会在15分钟内超时。在会话范围内定义的我的LoginSession JSF托管Bean正在重新初始化。
@ManagedBean(name = "loginsession")
@SessionScoped
public class LoginSession implements Serializable {
private boolean userLoggedIn;
public LoginSession() {
}
public boolean isUserLoggedIn() {
return userLoggedIn;
}
public void setUserLoggedIn(boolean userLoggedIn) {
this.userLoggedIn = userLoggedIn;
}
}
用户登录应用程序后,LoginSession中的userLoggedIn变量将设置为true。
但是,在将LoginSession注入到ViewScoped bean中15分钟之后,userLoggedIn变成了false,并将我重定向到错误页面。
@ManagedBean(name = "home")
@ViewScoped
public class Home {
@ManagedProperty("#{loginsession}")
private LoginSession loginSession;
public Home() {
}
public void prepare() {
try {
if (!loginSession.isUserLoggedIn()) {
Exception ex = new Exception("User Not Logged In. Please <span class=\"text-bold text-danger\"><a href=\"/WebUtil/faces/login/index.xhtml\" class=\"text-danger\">RE-LOGIN</a></span> .");
Helper.redirectToErrorPage(ex, loginSession);
return;
}
}
}
public LoginSession getLoginSession() {
return loginSession;
}
public void setLoginSession(LoginSession loginSession) {
this.loginSession = loginSession;
}
}
我无法找出问题所在。我很高兴有人能给我一些提示。谢谢。
编辑:
@ManagedBean(name = "login")
@RequestScoped
public class LoginPage {
@ManagedProperty("#{loginsession}")
private LoginSession loginSession;
public void setLoginSession(LoginSession bea) {
loginSession = bea;
}
public void prepare() {
loginSession.setUserLoggedIn(false);
}
public String submit() {
loginSession.setUserLoggedIn(true);
return "/faces/floor/Home.xhtml?faces-redirect=true";
}
}
submit()方法在用户输入凭据并单击登录时执行。prepare()在登录页面加载时执行。
答案 0 :(得分:2)
此问题现已解决。一段时间不活动后,负载平衡器重定向到其他服务器是一个问题。