Frage

In meinem Verständnis von Servlets, wird die Servlets durch den Container, dessen init() Methode aufgerufen wird einmal instanziert werden, und das Servlet wie ein Singleton leben, bis die JVM beendet wird.

Ich erwarte nicht, mein Servlet serialisiert sein, da es neu aufgebaut werden, wenn der App-Server erholt oder ist in der Regel startet. Das Servlet sollte keine sitzungsspezifische Mitglieder halten, so dass es nicht sinnvoll, auf der Festplatte und neu instanziiert geschrieben werden. Gibt es einen praktischen Nutzen für das?

Meine Bedenken sind, dass ich innerhalb von dort einige nicht serialisierbaren Felder gesetzt und dann wird meine app auf mysteriöse Weise in einer Produktionsumgebung nicht, wo eine andere Art von Sitzung Replikation stattfinden wird.

War es hilfreich?

Lösung

Technisch glaube ich, die Servlet-Container zu „passivieren“ das Servlet-Objekt auf der Festplatte erlaubt ist, in ähnlicher Weise, dass EJB Session Beans sein. Sie sind also richtig, die Frage zu fragen, ob Ihre App aufgrund nicht serialisierbaren Felder fehl.

In der Praxis habe ich noch nie einen Behälter tut dies gehört, also es ist wirklich nur Legacy-Gepäck von den schlechten alten Zeiten des frühen J2EE. Ich würde nicht darum kümmern.

Andere Tipps

HttpServlet sollte auf der Festplatte serialisiert durch und Neustart der Servlet-Container überleben. Zum Beispiel tomcat können Sie Flagge setzen, die diese Art von überleben können. Die nächste Option ist Übertragung mit JNDI. Dies ist nicht Müll, ist es nur in extremen Anwendungsfällen eingesetzt.

Google scheint darauf hinzudeuten, dass dies so, dass die Container Autoren getan wurde die Möglichkeit haben kann, wenn sie es wollen.

Sie sind richtig, dass die Servlet keine sitzungsspezifische Mitglieder halten sollte, würde in der Tat denke ich, wie möglich überhaupt so wenig Staat wollen würde. Wenn Sie alles speichern, in entweder Session oder ServletConfig, ich glaube, Sie in der Lage sein würden, um die Serialisierung zu überleben.

Wie Session-Objekte serialisiert werden Caches, um zu überleben für die servletcontainers der Cluster-Option zu geben, könnte es eine Option für einen Container, eine Servlet-Instanz als auch auf einem anderen Cluster-Knoten zu übertragen ?? Ich kann nur raten hier

Serializable als Marker-Schnittstelle für die Sitzungsattribute in verteilten Umgebung verwendet.

  

SRV.7.7.2 verteilte Umgebungen (JSR-154)

     

Im Rahmen einer Anwendung markiert als verteilbar , sämtliche Anforderungen,   Teil einer Sitzung muss von einer Java Virtual Machine behandelt werden   ( „JVM“) zu einem Zeitpunkt. Der Behälter muss in der Lage sein, alle Objekte zu handhaben   mit der setAttribute in Instanzen der Http Klasse platziert   oder putValue Methoden angemessen. Die folgenden Einschränkungen sind   auferlegt, diese Bedingungen zu erfüllen:

     
      
  • Der Behälter muss Objekte akzeptieren, die die Serializable Schnittstelle implementieren.
  •   
  • Migration von Sitzungen wird von Containern-spezifischen Einrichtungen behandelt werden.
  •   
     

Das verteilte Servlet-Container muss ein Wurf   Illegal für Objekte, bei denen die Behälter kann nicht   unterstützen den Mechanismus notwendig für die Migration der Sitzung Speicher   sie .

     

Das verteilte Servlet-Container muss den Mechanismus unterstützen notwendig   zum    Migration Objekte, die Serializable implementieren.

     

(...)

     

Der Container Provider kann die Skalierbarkeit und die Qualität des Service gewährleisten   Funktionen wie Load-Balancing und Failover von mit der Fähigkeit,   bewegen, um ein Sitzungsobjekt und seinen Inhalt von jedem aktiven Knoten der   Wenn verteiltes System auf einen anderen Knoten des Systems verteilt.   Container anhalten oder wandern Sitzungen bieten Qualität   Service-Funktionen, werden sie mit dem nativen JVM nicht eingeschränkt   Serialisierungsmechanismus für die Serialisierung HttpSessions und ihre   Attribute. Die Entwickler sind nicht garantiert, dass die Behälter nennen   readObject- und write Methoden auf Sitzungsattribute, wenn sie   setzen sie, sind aber, dass die Serializable Schließung garantiert von   ihre Attribute erhalten werden .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top