Warum implementiert HttpServlet Serializable?
Ist In meinem Verständnis der Servlet das Servlet instanziiert werden durch den Container, seine init()
Methode wird einmal aufgerufen, und das servlet wird ein Leben wie ein singleton, bis die JVM heruntergefahren.
Ich erwarte nicht, dass mein servlet serialisiert werden, denn es wird gebaut, neue, wenn die app-server wiederhergestellt oder ist es normal startet. Das servlet sollte keine session-bestimmten Elemente, so dass es nicht sinnvoll ist, für die es auf den Datenträger geschrieben werden und re-instanziiert werden.
Gibt es eine praktische Verwendung dafür?
Meine Bedenken sind, dass ich einige nicht-serialisierbare Felder innerhalb es und dann ist meine app wird auf mysteriöse Weise nicht in einer Produktionsumgebung, wo eine andere Art von session-Replikation stattfinden wird.
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Technisch, glaube ich, dass der servlet-container erlaubt ist, zu "Passivieren" das servlet-Objekt auf der Festplatte, in einer ähnlichen Art und Weise, EJB-session-beans werden kann. Sie sind also richtig, die Frage zu stellen, wenn die app scheitern wird, aufgrund der nicht-serialisierbare Felder.
In der Praxis, ich habe noch nie gehört, ein container, dies zu tun, also ist es wirklich nur legacy Gepäck aus der schlechten alten Tagen der frühen J2EE. Ich würde nicht darum kümmern.
InformationsquelleAutor der Antwort skaffman
HttpServlet sollte serialisiert auf der Festplatte gespeichert und überleben den Neustart des servlet-container. Zum Beispiel tomcat legen Sie die fahne, die es ermöglichen, diese Art von überleben. Die nächste option ist die übertragung über JNDI. Das ist nicht Müll, es wird nur in extremen Fällen verwenden.
InformationsquelleAutor der Antwort Rastislav Komara
Google scheint zu suggerieren, dass dies getan wurde, so dass container-Autoren haben die Möglichkeit, wenn Sie es wollen.
Ist richtig, dass das servlet zu halten sollte keine session-spezifischen Mitglieder, in der Tat würde ich denken, Sie wollen würde, so wenig Staat als möglich. Wenn Sie speichern alles in einer Sitzung oder ServletConfig, ich glaube, Sie wäre in der Lage zu überleben Serialisierung.
InformationsquelleAutor der Antwort matt b
Genauso wie Session-Objekte werden serialisiert, um zu überleben-caches für diese servletcontainers geben Sie die cluster-option, es könnte auch eine option sein, einen container zu übertragen, eine Servlet-Instanz auf einem anderen cluster-Knoten ?? Ich bin hier nur raten
InformationsquelleAutor der Antwort anjanb
Serializable verwendet wird, als marker-interface für session-Attribute in einer verteilten Umgebung.
InformationsquelleAutor der Antwort