メモリ内セッションの複製/クラスタリングを回避し、セッションをデータベースに格納する方法を模索しています。 TomcatのJDBCStoreを使用することは、サーバのメモリを節約するためにデータベース内の非アクティブなセッションのみを保存するため、この時点では役に立たない。 提案がありますか?Tomcat:セッションをデータベースに保存する
おかげで先行 ファビアン
メモリ内セッションの複製/クラスタリングを回避し、セッションをデータベースに格納する方法を模索しています。 TomcatのJDBCStoreを使用することは、サーバのメモリを節約するためにデータベース内の非アクティブなセッションのみを保存するため、この時点では役に立たない。 提案がありますか?Tomcat:セッションをデータベースに保存する
おかげで先行 ファビアン
あなたはその後、全くそれを使用しないでください、使用されることを想定している方法でセッションを使用しない場合 - あなた自身のセッションオブジェクトを開発。これはまだHttpSession
を実装でき、HttpSession
の実装から拡張することもできます。
Filter
を使用すると、リクエストをラップして標準のセッションオブジェクトではなくセッションオブジェクトを返すことができます。あなたのセッションでは、メモリの代わりに物事をDBに保存することができます。
DBに書き込む代わりに、Hazelcastを使用できます。分散コレクションを提供します。しかし、セッションレプリケーションを構成するのと同じ努力を要すると思います。そして、セッションの複製はそれほど難しいことではありません。それはすべてのコンテナでサポートされています。
これは大まかなガイドラインですが、その作業は簡単なことではありません。そして、私は標準的なセッションの使用パターンを守り、実際に必要な場合にのみDBに物事を格納することをお勧めします。
複製の必要性を避けるために、スティッキセッションを使用することができます。つまり、ユーザーがロードバランサによってサーバーに誘導された場合、そのユーザーによるその後の要求はすべて同じサーバーに送信されます。
this projectをご覧になりたいですが、私はむしろセッションをDBではなくmemcachedに保存することをお勧めします。
私はそれをチェックアウトしました - 非常に興味深いですが、非粘着性のセッションバージョンはプロダクションでは準備ができていません( – Fabe
興味深いプロジェクト、確かに+1 – Bozho
btw、memcached-session-manager 1.4がリリースされました。 – MartinGrotzke
自分自身でJDBCセッションマネージャを実装する方法はありませんが、あなたの答えと時間に感謝します.Hazelcastはもっと見栄えがよく、とても強力です。私はJ.Brisbinのような何かをするでしょう:http://jbrisbin.com/web2/articles/tomcat-session-manager-backed-by-riak/
AmazonでElastic Beanstalkを見ましたか?スティッキセッションを提供します。 – stepanian