JSF Web应用程序超时问题

时间:2019-01-24 21:34:09

标签: session jsf web.xml weblogic12c session-timeout

我有一个使用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()在登录页面加载时执行。

1 个答案:

答案 0 :(得分:2)

此问题现已解决。一段时间不活动后,负载平衡器重定向到其他服务器是一个问题。