Mittwoch, Januar 22, 2020

Tomcat: Speichern der session in Datenbank

Ich bin auf der Suche nach einem Weg, um zu vermeiden, in-memory-session-replication/Cluster und speichern der session in einer Datenbank. Verwendung von Tomcat ist JDBCStore ist sinnlos an dieser Stelle, denn es speichert nur inaktive sessions in der Datenbank zu speichern Speicher des servers.
Irgendwelche Vorschläge?

Dank im Voraus
Fabian

  • Aus Neugier, haben Sie sah von Amazon Elastic Beanstalk? Sie bieten sticky sessions.
InformationsquelleAutor Fabe | 2011-01-31

3 Kommentare

  1. 7

    Wenn Sie nicht wollen, verwenden Sie die Sitzung, in der Art, wie es verwendet werden soll, dann verwenden Sie es nicht überhaupt – entwickeln Sie Ihre eigenen session-Objekt. Es kann noch implementieren HttpSession, und sogar die Verlängerung der aus einer Umsetzung von HttpSession.

    Können Sie eine Filter zu wickeln Sie Ihre Anfrage, so dass es gibt Ihre session-Objekt, anstatt der standard. In Ihrer Sitzung, die Sie speichern können, die Dinge in die DB anstelle von in-memory.

    Anstelle des Schreibens an die DB, die Sie verwenden können, Hazelcast – es stellt die verteilte Sammlungen. Aber ich denke, es wird die gleiche Menge Aufwand zum konfigurieren der session-Replikation. Und session-Replikation ist nicht etwas, das schwer – es wird unterstützt von allen Containern.

    Dies sind grobe Richtlinien, wird die Aufgabe nicht trivial sein. Und ich würde empfehlen, das festhalten an der standard-session-Nutzungsgewohnheiten und die Speicherung Dinge in der DB nur, wenn wirklich nötig.

    Um zu vermeiden, die Notwendigkeit der Replikation, die Sie könnten versuchen, mithilfe von sticky sessions, d.h. wenn ein Benutzer gerichtet ist, einen server durch den load-balancer, bei jeder nachfolgenden Anforderung, die von diesem Benutzer gesendet wird, auf dem gleichen server.

    • Danke für die schnelle Antwort. Meine Absicht ist es, mehrere Tomcat in Microsoft Azure. Das problem mit sticky-sessions ist, dass es nicht unterstützt wird vom Azure-Lastenausgleichsmodul. Der einfachste Weg das zu erreichen session-Replikation in diese cloud-Umgebung ist, die zum speichern der session in die db. Hast du irgendwelche code-Beispiele für die HttpSession-Erweiterung und den Filter? Danke für deine Antwort
    • Ich habe keine Beispiele, sorry.
  2. 3

    Vielleicht möchten Sie sich bei dieses Projekt, würde ich lieber die Speicherung von sessions in memcached statt in der DB.

    • Ich checket Sie es aus – sehr interessant, aber die non-sticky Session-Version ist Nicht Bereit für die Produktion ;(
    • Interessantes Projekt in der Tat +1
    • btw, memcached-session-manager 1.4 ist jetzt veröffentlicht – mit Unterstützung für non-sticky sessions

Kostenlose Online-Tests