【问题标题】:JSF Web Application Timeout IssueJSF Web 应用程序超时问题
【发布时间】:2019-01-24 21:34:09
【问题描述】:

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

【问题讨论】:

  • 你是说不使用JSF就没有这个问题吗?
  • 你如何/在哪里设置它true
  • 请在上面的帖子中查看我的编辑。
  • 到目前为止对我来说还不错。没有注意到您的编辑,因为您没有 @SirishV 我。你确定 web.xml 实际上是有效的吗?关于较旧的答案,它应该优先于 WEB-INF/weblogic.xml 或 weblogic 默认值:stackoverflow.com/questions/12930703/…
  • @Selaron 我相信如果 web.xml 无效,它至少应该将会话超时默认为 30 分钟。这个问题有些不一致,即使应用程序在后台闲置超过 60 分钟,我今天也无法复制它。我没有 weblogic.xml 文件,我的 weblogic 服务器超时默认设置为 60 分钟。

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


【解决方案1】:

此问题现已解决。这是负载均衡器在一段时间不活动后重定向到不同服务器的问题。

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多