Le problème repose sur 3 éléments :

  1. Une même session HTTP est partagée par les différentes instances d'un navigateur (depuis Firefox 3.6, et IE8).
  2. Tomcat, par défaut, conserve les sessions HTTP (sérialisation), lors de l'arrêt d'une application web, pour un redémarrage à chaud.
  3. La session middleware d'un programme Adélia web en conservation des connexions est stockée sur la session HTTP (mais remise à zéro sur le déchargement de l'application web).

Ces 3 conditions font, que lorsqu'un navigateur reste ouvert, et que l'application web est rechargée puis réutilisée, la session middleware utilisée par cette application est vide et provoque une erreur amenant à une page incomplète.

Pour pallier ce problème, le plus simple est de modifier le contexte de l'application web (pour éviter que tomcat sérialise les sessions HTTP).

Editer le fichier de configuration server.xml de la sorte (modifier le contexte de votre application en ajoutant l'élément fils <Manager pathname="" />):

Exemple :

<Context path="/monapp" docBase="D:\webapps\monapp">
<Manager pathname="" /> 
</Context>


Puis redémarrer Tomcat