Frage

, wenn sie die Regler in den Struts-Framework sagen multi-threaded sind, bedeutet es, dass mehrere Instanzen des Servlets sind die Anforderung zu nehmen und es auf das Modell weiterzuleiten. OR bedeutet es, dass eine einzelne Instanz gibt es alle Anfragen zu nehmen? Jegliche Grafik ist zu erkennen,

War es hilfreich?

Lösung

Wie pro den meisten anderen Servlets, ein separater Thread erstellt wird jede Anforderung zu verarbeiten. Sie haben den SingleThreadedModel Schnittstelle implementieren für jede Anforderung eine neue Instanz des Servlets zu erhalten.

Andere Tipps

finden Sie unter http://struts.apache.org/1.x/ -Nutzerhandbuch / building_controller.html

Die Struts Controller-Servlet erzeugt nur eine Instanz der Action-Klasse, und verwendet diese eine Instanz alle Anfragen zu bedienen. So müssen Sie Thread-sichere Action-Klasse schreiben. Folgen Sie den gleichen Richtlinien, die Sie verwenden würden, Thread-sicher Servlets zu schreiben. Hier sind zwei allgemeine Richtlinien, die Sie schreiben, skalierbare, Thread-sichere Action-Klassen helfen:

  • Verwenden Sie nur lokale Variablen - Der wichtigste Grundsatz, dass Hilfsmittel in Thread-sichere Codierung ist nur lokale Variablen zu verwenden, nicht Instanzvariablen , in der Aktion Klasse. Lokale Variablen werden auf einem Stapel erstellt, die (von Ihrem JVM) auf jede Anforderung Thread zugeordnet ist, so gibt es keinen Grund zur Sorge über sie zu teilen. Eine Aktion kann in mehrere lokale Methoden berücksichtigt werden, solange alle benötigten Variablen werden als Methodenparameter übergeben. Dies stellt sicher, Thread-Sicherheit, da die JVM solche Variablen behandelt intern den Call-Stack verwendet, die mit einem einzigen Thread.

  • zugeordnet ist,
  • Conserve Ressourcen - Als allgemeine Regel gilt, knappe Ressourcen Aufteilung und sie über Anfragen vom gleichen Benutzer (in der Sitzung des Benutzers) zu halten, kann die Skalierbarkeit zu Problemen führen. Zum Beispiel, wenn Ihre Anwendung JDBC verwendet, und Sie weisen Sie eine separate JDBC-Verbindung für jeden Benutzer, werden Sie wahrscheinlich in einigen Skalierbarkeitsprobleme laufen, wenn Ihre Website zeigt mich plötzlich auf Slashdot. Sie sollten sich bemühen, Pools zu verwenden und veröffentlichen Ressourcen (wie zB Datenbankverbindungen) vor Steuerung an die entsprechende View-Komponente zur Weiterleitung - auch wenn eine Bean-Methode eine Ausnahme genannt haben wirft.

Streben 1 ist nicht Thread sicher; aber wie für strus 2, es ist eine Instanz pro Anfrage.

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