【问题标题】:Unable to maintain session on AppFog with Spring无法使用 Spring 在 AppFog 上保持会话
【发布时间】:2013-09-24 12:23:45
【问题描述】:

我正在开发一个使用 Spring MVC-Hibernate 开发的 Java Web 应用程序。该应用程序在 Glassfish-3.1.2 和 Tomcat-6/7 上部署时运行良好。但是,当应用程序部署在 AppFog(Website Hosting application) 上时,它无法保持会话,即用户登录到应用程序,但是,当他点击任何链接时,他会被重定向回登录页面。

发生这种情况是因为我创建了一个拦截器 (SessionInterceptor) 来检查每个请求的用户会话,该请求将应用程序重定向到登录页面,以防会话过期。以下是我在 SessionInterceptor 类的 preHandle() 方法中编写的代码:

@Override
public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {
    HttpSession session = request.getSession();
    if(!(handler instanceof HomeController || handler instanceof ForgetPasswordController)) {
        if(session.getAttribute("user") == null) {
            response.sendRedirect(request.getContextPath()+"/"+redirectMapping+"?msg=e");
            return false;
        } else {
            return true;
        }
    } else {
        return true;
    }
}

我不知道为什么 AppFog 会发生这种情况。任何帮助将不胜感激。提前致谢!

【问题讨论】:

  • 嘿 Gurminder,我遇到了和你一样的问题,appfog 和 spring。在我的情况下,当我登录并更改到另一个页面或加载资源时,jsessionid 会更改(每 1-5 个请求),因此我的会话被重新创建。你找到解决方案了吗?可能是 appfog 错误。
  • 还没有@maqjav,没有人在stackoverflow和其他地方有答案。我相信你是对的。可能是 appfog 错误。
  • 我在Appfog开了一张票,看看能不能得到答复,虽然是免费帐户,但需要一段时间才能得到答复。我会及时通知你。
  • 好的@maqjav。感谢您抽出宝贵时间!
  • 嘿@Gurminder Singh。我从支持人员那里得到了答复,他们已将问题升级以进行一些测试。一旦我得到答案,我会告诉你。

标签: java session spring-mvc web-hosting appfog


【解决方案1】:

AppFog 支持哪种 servlet 规范?如果我没记错的话,servlet >=2.3 支持spring mvc Interceptor

【讨论】:

  • 我不知道详细,但是,我猜 AppFog 最多只支持 2.5 规范。但是,据我说,拦截器工作正常,因为如果它们不这样做,应用程序就不应该重定向到主页。
猜你喜欢
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多