0

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 つの質問があります。

  • 更新によって新しいセッションが作成されるのはなぜですか? 古いものは残すべきではないのですか?
  • サービスのさまざまな用途でユーザーを追跡するためのより良い方法について何か提案はありますか?

ありがとう。

4

1 に答える 1

0

毎回新しいセッションが作成される理由がわかりません。コードは私には問題ないように見えます。タイムアウトを設定してweb.xml、違いが生じるかどうかを確認できます。

<session-config>
  <session-timeout>-1</session-timeout>
</session-config>
于 2013-01-12T17:21:40.400 に答える