Question

Nous utilisons JBoss 4.22 avec des portlets. Lorsque la balise listener ne se trouve pas dans le fichier web.xml, le portlet est chargé, mais le listener sessionDestroyed () n'est jamais appelé (évidemment). Une fois ajouté, le portlet n'est pas chargé et il n'y a pas d'exception ni de message de journal. Y a-t-il des pièges dont je devrais être au courant?

   <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
             version="2.4">


           <!-- Listeners used by application -->
        <listener>
            <listener-class>listenerpackage.MyClassThatImplementsHttpSessionListener</listener-class>
        </listener>
    ...Other tags...
    </web-app>

En réponse aux commentaires, j'ai parcouru le code pour rechercher les points chauds. Le constructeur de mon auditeur a quelques problèmes possibles. Normalement (pas en tant qu'écouteur), une instance serait créée par le constructeur du portlet approprié (celui qui n'est pas chargé lorsque l'écouteur est ajouté au web.xml). Puis-je toujours espérer que ce soit le cas ou le conteneur crée-t-il une instance elle-même?

Était-ce utile?

La solution

Le problème est que les écouteurs déclarés dans le document de déploiement sont instanciés lorsque ce document est chargé. Ma classe a été conçue pour être instanciée par le portlet, de sorte que les informations nécessaires n'étaient pas disponibles.

Une solution consiste à utiliser un HttpSession Liaison Listener et l'ajout de la classe en tant qu'attribut à la session. Ensuite, unbound () est appelé lorsque la session est invalidée. :)

Autres conseils

Votre nœud écouteur est-il dans le bon ordre dans votre web.xml? Peut-être est-il ignoré pour ne pas suivre la DTD? Par exemple, les servlets, les mappages de servlets et les configurations de session sont supposés être avant l'écouteur.

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