JSF Web 应用程序超时问题
JSF Web Application Timeout Issue
我有一个使用 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 被证明是错误的,并将我重定向到错误页面。
@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() 在登录页面加载时执行。
此问题现已解决。这是负载平衡器在一段时间不活动后重定向到另一台服务器的问题。
我有一个使用 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 被证明是错误的,并将我重定向到错误页面。
@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() 在登录页面加载时执行。
此问题现已解决。这是负载平衡器在一段时间不活动后重定向到另一台服务器的问题。