Question

quand ils disent que le contrôleur d'action dans la structure struts est multi-thread, cela signifie-t-il qu'il existe plusieurs instances du servlet prenant la demande et la transmettant au modèle? OU cela signifie-t-il qu'une seule instance accepte toutes les demandes? Tous les visuels seront appréciés

Était-ce utile?

La solution

Comme pour la plupart des autres servlets, un thread distinct est créé pour traiter chaque demande. Vous devez implémenter l'interface SingleThreadedModel pour obtenir une nouvelle instance du servlet pour chaque demande.

Autres conseils

voir http://struts.apache.org/1.x/ userGuide / building_controller.html

Le servlet du contrôleur Struts crée une seule instance de votre classe Action et l'utilise pour traiter toutes les demandes. Ainsi, vous devez écrire des classes d'action thread-safe. Suivez les mêmes instructions que vous utiliseriez pour écrire des servlets thread-safe. Voici deux instructions générales qui vous aideront à écrire des classes d’action évolutives et adaptées aux threads:

  • Utiliser uniquement les variables locales : le principe le plus important en matière de codage thread-safe est de n'utiliser que des variables locales, pas des variables d'instance , dans votre action. classe. Les variables locales sont créées sur une pile affectée (par votre machine virtuelle) à chaque thread de demande. Il n'est donc pas nécessaire de les partager. Une action peut être factorisée dans plusieurs méthodes locales, à condition que toutes les variables nécessaires soient transmises en tant que paramètres de méthode. Cela garantit la sécurité des threads, car la machine virtuelle Java gère ces variables en interne à l'aide de la pile d'appels associée à un seul thread.

  • Conserver les ressources : en règle générale, l’allocation de ressources rares et leur conservation dans les demandes émanant du même utilisateur (dans sa session) peuvent entraîner des problèmes d’évolutivité. Par exemple, si votre application utilise JDBC et que vous allouez une connexion JDBC distincte pour chaque utilisateur, vous allez probablement rencontrer des problèmes d'évolutivité lorsque votre site apparaîtra soudainement sur Slashdot. Vous devez vous efforcer d'utiliser des pools et de libérer des ressources (telles que des connexions de base de données) avant de transférer le contrôle au composant View approprié, même si une méthode bean que vous avez appelée lève une exception.

struts 1 n'est pas thread-safe; mais comme pour strus 2, c'est une instance par requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top