Google Application Engine (GAE) と Google Web Toolkit (GWT) に基づいて Web アプリケーションを構築しています。
クライアント (GWT) は、次の方法でサーバーと対話します。
- サーバーでホストされているデータセットから選択された画像の URL を RPC (サーブレット) 経由で要求します。
- ブラウザに画像を表示します。
- ユーザーがクリックしたポイントの座標を一時的な構造に保存します。
- ユーザーが別の画像を要求すると、クライアントはユーザーがクリックした画像をサーバーに送信します。
サーバーがユーザーのクリックを受信すると、それらをデータベースに保存し、ユーザー識別子も保存します。ユーザー認証を一切使用したくないので、異なるユーザーを区別するために HTTP セッションを使用しようとしました。
HTTP セッションは、次の手順でサーブレットに作成されます。
public SessionInfo getSessionInfo() {
HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession();
if(session.isNew()) session.setMaxInactiveInterval(-1);
Integer i = (Integer) session.getAttribute("access_count");
if(i == null) {
i = new Integer(1);
} else {
i = new Integer(i.intValue()+1);
} // if
session.setAttribute("access_count", i);
SessionInfo sInfo = new SessionInfo(session.getId(), i.intValue());
return sInfo;
}
ドキュメントから、私は次の指示を理解しました:
session.setMaxInactiveInterval(-1);
セッションが期限切れにならないようにします。ただし、ブラウザでページが更新されるたびに、新しいセッションが作成されます。セッションが有効になっています。
2 つの質問があります。
- 更新によって新しいセッションが作成されるのはなぜですか? 古いものは残すべきではないのですか?
- サービスのさまざまな用途でユーザーを追跡するためのより良い方法について何か提案はありますか?
ありがとう。