Spring MVC-Hibernate を使用して開発された Java Web アプリケーションに取り組んでいます。Glassfish-3.1.2 および Tomcat-6/7 にデプロイすると、アプリケーションは正常に動作します。ただし、アプリケーションがAppFog (Web サイト ホスティング アプリケーション)にデプロイされている場合、セッションを保持できません。つまり、ユーザーはアプリケーションにログインしますが、リンクをクリックすると、ログイン ページにリダイレクトされます。
これは、セッションの有効期限が切れた場合にアプリケーションをログイン ページにリダイレクトするリクエストごとにユーザー セッションをチェックするインターセプター (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 で発生している理由はわかりません。どんな助けでも感謝します。前もって感謝します!