Ich möchte einige Kommentare zur Verwaltung langlebiger XMPP-Verbindungen auf einem Servlet-Container, z. B. Tomcat, hören.Verarbeiten von Logins an einen XMPP-Server über Servlets
Grundsätzlich haben wir einen Client, der Anmeldedaten an ein Servlet sendet und für jede Sitzung eine XMPPConnection erstellt und in HttpSession speichert.
Zu vereinfachend kann der Client 4 Operationen ausführen: Anmelden, Senden/Empfangen von Nachrichten, Abmelden.
(1) Wie Sie sehen können, sollte die Lebensdauer der XMPPConnection von dem Client behandelt (gesteuert) werden. In unserem Fall ist der HttpSession eine Zeitüberschreitung zugeordnet. Glaubst du, das Vertrauen auf HttpSession ist ein Fehler?
(2) Aus einer Garbage Collection Sicht ist es ein Problem, wenn die Http timed-out ist und wir rufen nicht speziell XMPPConnection.disconnect()? So wie ich es verstehe, sobald das Zeitlimit erreicht ist, werden alle Objekte im Sitzungsumfang per GC erfasst. Würde die VM die XMPPConnection verbieten und ignorieren, wenn sie immer noch verbunden ist?
(3) Was ist der Unterschied zwischen einer HttpSession Timeout und Ungültigkeitserklärung? Mein Verständnis ist, dass Timeout auf ein bestimmtes Objekt bezieht, während die Aufhebung alles entfernt.
Danke. Schön zu wissen, dass es für Sie funktioniert (Betreff: XMPPConnection in HttpSession). Ich werde stattdessen einen SessionAttributeListener verwenden. Es sollte das gleiche Ziel erreichen. –