|
Taille des objets HttpSession et performance des applications J2EE
Au fur et à mesure du
stockage des données, les objets HttpSession réduisent la taille de la mémoire
disponible pour l’application et affectent à la baisse le débit du conteneur
comme le montre la figure 34.
La spécification J2EE n’offre à ce jour aucun moyen pour plafonner la taille de
la mémoire occupée par les objets HttpSession mais les techniques décrites
ci-dessous permettent d’en juguler la progression.
• Configurer le conteneur de façon à limiter le nombre d’objets HttpSession
crées par l’application.
• Stocker seulement les clés [165] dans les objets HttpSession et conserver le
reste des valeurs dans la base de données de l’application. Avec cette technique
il faut, cependant, s’attendre à une augmentation du temps de réponse.
• Réduire la durée de vie des objets HttpSession afin que le conteneur puisse
libérer de la mémoire lorsque le client arrête d’interagir avec le site. Cette
réduction doit, néanmoins, tenir compte des cas d’utilisation pour ne pas
perturber le fonctionnement global de l’application. Par exemple si on utilise
les objets HttpSession pour stocker les articles d’un panier d’achat, il faut
éviter de trop raccourcir leur durée de vie. Sinon le panier risque de se vider
avant que le client n’ait le temps de passer à la caisse. A l’opposé les durées
de vie courtes sont plus tolérées sur les sites d’intermédiation financière
parce qu’elles contribuent au renforcement de la sécurité. Cela dit, la plupart
des conteneurs attribuent par défaut une durée de validité de 30 minutes aux
objets HttpSession mais cette durée peut être aussi modifiée à partir du code de
l’application.
Figure 34: Impact de la taille d’un objet HttpSession sur le débit du
Websphere Application Server [166]

• Intégrer à
l’application une fonctionnalité qui permet au client de se déconnecter (log
out) à la fin de chaque visite. L’objectif étant d’invalider l’objet HttpSession
qui lui a été attribué dès la survenance de la déconnexion. Cette technique
présente toutefois des limites décrites dans cet extrait du livre Performance
Analysis for Java™ Web Sites .
“ While we recommend a logout feature, we don't really expect it to solve
HTTP session management for your web site. Sadly, most users never touch the
logout buttons on web sites they visit. Most users just move to the next web
site without formally logging out of yours. So, while it provides some benefits,
the logout function is only a part of an overall HTTP session management
strategy. If your web application handles sensitive data (such as financial
information) and may be accessed from a shared workstation or kiosk, consider a
logout function to be a requirement. Logging out prevents subsequent users from
obtaining a previous visitor's information via an existing HTTP session.
Naturally, these applications generally support a very short HTTP session
timeout interval and may force a logout after completing certain tasks.”
Notes de bas de page
[165] Rappelons que les objets HttpSession sont des Hastables
qui stockent les données dans un vecteur (clef, valeur).
[166] Source : Harvey W. Gunther, WebSphere Application Server, Development Best
Practices for Performance and Scalability, IBM White Paper, September 7, 2000
|