【发布时间】: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