Sie können Ihren Container so konfigurieren, dass Sitzung mit der Datenbank über JDBC persistiert wird. Wenn Sie Tomcat verwenden, können Sie den JDBC-Sitzungspersistenzanbieter konfigurieren. Ich nehme an, Sie können das auch auf anderen Containern tun.
Ich habe zum Einrichten tomcat JDBC Sitzungspersistenz auf meinem Blog die Schritte dokumentiert: http://gerrydevstory.com/2013/08/21/tomcat-7-jdbc-session-persistence/
Zusammengefasst Sie eine Konfiguration wie diese auf Ihrem context.xml benötigen:
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="10">
<Store className="org.apache.catalina.session.JDBCStore"
connectionURL="jdbc:mysql://localhost/mytomcat?user=root"
driverName="com.mysql.jdbc.Driver"
sessionAppCol="app_name"
sessionDataCol="session_data"
sessionIdCol="session_id"
sessionLastAccessedCol="last_access"
sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions"
sessionValidCol="valid_session" />
</Manager>
jedoch maxIdleBackup="10"
oben zeigt an, dass die Sitzung erst nach 10 Sekunden Inaktivität in jdbc geleert wird. Ich weiß nicht, ob es funktioniert, wenn ich es auf 0 setze.
Ich kann mir vorstellen, dass die ganze Sache ohne Sticky Load Balancer Sitzung funktioniert, zB: Wie können Sie sicherstellen, dass Sitzungsupdates vor der nächsten Anfrage gelöscht werden? Sie können nicht garantieren, dass die nächste Anfrage vom selben Knoten bedient wird.
Vielleicht ist eine andere Alternative, wenn Sie Ihr Selbst hacken können/gibt es eine andere Session-Provider-Bibliothek, die direkt in die Datenbank schreibt.
bearbeiten 21. Mai 2014:
ich nur hazelcast WM is a great library to do peer-to-peer session replication herausgefunden. Alles, was Sie tun müssen, ist, haselnussbraune Gläser in den Klassenpfad einzubauen, hazelcast-wm als Filter für Ihre web.xml einzurichten und hazelcast zu konfigurieren. Es wird automatisch Sitzungsobjekte über Cluster replizieren.
Aus Neugier easly tun kann, warum ist klebrig Sitzung eine Nicht-Option für Sie? – gerrytan
Nicht OP, aber für uns ist es nicht praktikabel, da wir in der Lage sein werden, die Server zu verkleinern, ohne auf das Ablaufen der Sitzungen warten zu müssen. – Dave4988