java jboss portlet

java - ¿Qué pasa con mi oyente en mi web.xml?



jboss portlet (2)

Estamos usando JBoss 4.22 con portlets. Cuando la etiqueta de escucha no está en el web.xml, el portlet se carga, pero la sesión de escucha Destroyed () nunca se llama (obviamente). Cuando se agrega, el portlet no está cargado y no hay excepciones ni mensajes de registro. ¿Hay algún problema que deba tener en cuenta?

<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 respuesta a los comentarios, he estado buscando en el código para encontrar lugares problemáticos. El constructor de My Listener tiene algunos problemas posibles. Normalmente (no como oyente) una instancia sería hecha por el portlet relevante (el que no se carga cuando el oyente se agrega al constructor web.xml). ¿Todavía puedo esperar que este sea el caso o el contenedor crea una instancia en sí?


¿Su nodo de escucha está en el orden correcto en su web.xml? Tal vez está siendo ignorado debido a no seguir el DTD? Por ejemplo, se supone que servlets, servlet-mappings, session-config están delante del oyente.


El problema es que los oyentes declarados en el documento de implementación se crean instancias cuando se carga ese documento. Mi clase fue diseñada para ser instanciada por el portlet, por lo que la información necesaria no estaba disponible.

Una solución es usar un oyente de enlace HttpSession y agregar la clase como un atributo a la sesión. Entonces se llama al desencadenante () cuando la sesión invalida. :)