У меня есть веб-приложение, созданное с использованием JSF 2.2 и развернутое в WebLogic 12.2.1.1.
Я установил тайм-аут сеанса в web.xml как 480, чтобы он оставался активным не менее 8 часов.
<session-config>
<session-timeout>
480
</session-timeout>
</session-config>
Тем не менее мое веб-приложение по-прежнему отключается в течение 15 минут, когда оно находится в режиме ожидания. Мой управляемый компонент LoginSession JSF, определенный в области действия сеанса, повторно инициализируется.
@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;
}
}
Переменная userLoggedIn в LoginSession устанавливается равной true, когда пользователь входит в приложение.
Однако через 15 минут, когда LoginSession внедряется в bean-компонент ViewScoped, 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;
}
}
Я не могу выяснить проблему. Я ценю, если кто-то может дать мне подсказку о том, что происходит. Спасибо.
EDIT:
@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 () выполняется при загрузке страницы входа.