Utilisation du SingleThreadModel dans les servlets

Lorsque vous concevez un Servlet vous devez prendre en considération que ce composant sera probablement invoqué dans un contexte multi-utilisateur qui introduit une concurrence d’accès aux ressources.
Il est inévitable que le composant soit sollicité par plusieurs utilisateurs simultanément. Il est donc nécessaire que votre code soit protégé contre ce type de mode d’accès.

Une instance d’une classe qui implémente l’interface SingleThreadModel est protégée contre l’invocation simultanée par plusieurs threads. Le moteur de servlet garantit qu’il n’y aura qu’une seule requête traitée par la méthode service() à la fois pour chaque instance du Servlet.
Cette exigence peut être résolue par le serveur d’application soit en rendant séquentiel les invocations de méthode soit en maintenant un pool d’instances du Servlet.

Dans le cas du pool de Servlet, plusieurs instances de Servlet sont utilisées pour servir des requêtes simultanées, chacune étant traitée par un thread et une instance dédiés.

Par exemple pour optimiser le traitement de Servlet implémentant cette interface WebLogic implémente, depuis plusieurs versions, un mécanisme de pool que l’on peut dimensionner avec le paramètre SingleThreaded Servlet Pool Size.
Attention toutefois car la valeur par défaut de ce paramètre est fixé à 5. Cela signifie qu’il ne peut pas y avoir plus de 5 requêtes traitées simultanément par un servlet implémentant cette interface.

Attention car cette interface est dépréciée dans les dernières versions de la spécification JEE et ce type d’implémentation ne protège pas contre l’accès concurrent aux ressources partagées.

Publicités

A propos jlerbsc

founder of JavaPerf Consulting Http://www.jperf.com
Cet article a été publié dans tech notes, Uncategorized. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s