1

非常にユニークな状況を見てきました。いくつかの入力が必要です。

背景: ELB を使用する ec2 インスタンスに tomcat サーバーがあります。私たちのアプリケーションは、ロードバランサーがセッションを追跡したくないため、セッションを使用しない春のアプリケーションです。ユーザーを識別するためにCookieを使用しています。Memcache を使用して、いくつかの基本的なセッション情報を保存します。ほとんどの場合、すべてがうまく機能します。

問題: 一部のリモート ケースでは、0.01% の時間 (分析) で、ユーザー間で応答が混乱しています。そして、ユーザーは通常、同じ clientIP から来ています。これは、私たちのアプリケーションが学校で広く使用されているためです。クライアント Cookie と、サーブレットで読み取った Cookie が一致します。アプリケーションが DB で間違った情報を検索していないことは確かです。しかし、レンダリングされている応答 (ビュー) は別のユーザー向けです。両方のユーザーが同時にログインしていることがわかります。

これはTomcatに関連するものですか?それともネットワーク関連?

コントローラーコード:

@RequestMapping("/kids")

public ModelAndView kids(HttpServletRequest request, HttpServletResponse response) {

    StudentUserSession studentUserSession = BaseController.getStudentUserSession(request);

    if(studentUserSession != null) {

    ModelAndView mv = new ModelAndView("kids");

        mv.addObject("studentUserSession", studentUserSession);

        return mv;

    } else {

        return new ModelAndView("redirect:/signin");

    }

}

JSP コード:

var acookie = readCookie("sp_utkn");

var studentId = ${studentUserSession.studentId};

$.getJSON("/getStudentProfile", function(data){
 var sId = -1;
 $.each(data, function (key, value) {
    if(key == 'studentId'){
    sId = value;
    }
 });
 dojo.xhrGet({
    url:"/logStudentEvent?cookie=" + acookie+"&stuId="+studentId+"&aId="+sId+"&ref="+otherInfo.join(','),
 });
  });

JSON Get Call は同じオブジェクトを取得しています。aId は Cookie と一致しますが、studentId は一致しません。ページ上の他のデータも別のユーザーのものです。しかし、Cookie は一貫性があり正確です。

4

0 に答える 0