2

Tomcat / Scalaでユーザーの状態を維持するための最良の方法は何ですか?私の最初の考えは、セッションのアカウント情報を常に保持し、アカウントのセッションに関する情報がない場合は、ユーザーをログインページにリダイレクトすることです。これは実行可能なモデルですか、それともユーザー情報を永続化するためのよりスマートな方法がありますか?基本的なショッピングカートサイトを複製しようとしていますが、今は問題について考えています。

4

1 に答える 1

2

この猫の皮を剥ぐ方法はたくさんあります。オブジェクトが十分に軽量である(そしてトラフィック量が十分に少ない)場合は、セッションに情報を保存できます。これはおそらく最も簡単な解決策ですが、スケーリングまたはクラスター化する必要がある場合に問題が発生する可能性があります。

経験から、Tomcatのスケーリング、クラスタリング、dbセッションストアなどは私にはあまりうまく機能しませんでした。

別の方法は、Cookieを使用して独自のトークンを管理することです。次に、特定のユーザートークンの実際の情報をサーバーに保存します。最も単純な実装では、メモリ内のマップを使用するだけですが、アプリを再起動するとすべてのデータが失われるという欠点があります。

情報をデータベースに永続化し、すべてのリクエストでユーザートークンを使用してルックアップを実行できます(おそらく何らかのキャッシュ戦略を使用)。これにより、クラスタリングをあまり気にすることなく、複数のアプリサーバーに拡張することもできます。各インスタンスは、ユーザートークンを検索し、共有データベースで検索リクエストを実行するだけです。

実際の実装を優れたインターフェイスの背後にラップすると、簡単で安価なセッションソリューションから始めて、後で必要になった場合は徐々により複雑な実装に移行できます。注意点の1つは、最初の実装でサーブレット固有の情報がインターフェースに漏洩しないように特に注意する必要があるということです。

于 2009-09-16T22:45:03.253 に答える