Como funciona la interfaz HttpSessionBindingListener

Cristina
02 de Abril del 2004
Me ocurre el siguiente problema, quiero que se me cierre la conexion cuando se cierre el navegador.No se si es exactamente ese nombre el de la interfaz, pero tengo entendido q por hay van los tiros.
Gracias de antemano

maramonar
02 de Abril del 2004
La interfaz es HttpSessionListener, y básicamente se le notifican a las implementaciones de esa interfaz cuando se crean o se destruyen los HttpSession. De todas maneras no vas a poder detectar cuando se cierre el navegador. Lo que seguramente pasará cuando se cierre el navegador es que llegado el timeout de la sesión relacionada, esta se destruya y recién ahí se notifique a la implementación del HttpSessionListener. No se a que tipo de conexión te referis cuando decis que queres que se cierre, pero si es una conexión a la DB lo ideal sería que liberes la conexión despues de procesar cada request.
Espero te sirva

Cristina
02 de Abril del 2004
Muchas gracias, pero de todas formas lo q quero saber es como se llaman los metodos de la interfaz. Estoy conectada a una B.D. oracle y lo q hace la aplicacion jsp es mostrar los registros de una tabla y despues poder hacer insert, updates y deletes. Por lo que me parece un poco peñazo estar continuamente conectandome y desconectandome y el scope es session y no tengo permitido poner botones para desconectarme. Y donde iria la implementacion de la interfaz? en el Bean no?
Gracias de antemano

maramonar
02 de Abril del 2004
>> Muchas gracias, pero de todas formas lo q quero saber es como se llaman los metodos de la interfaz
Los métodos buscalos en los JavaDoc de tu distribución de J2EE, pero básicamente el que te podría interesar es el sessionDestroyed(HttpSessionEvent se) .
>> Estoy conectada a una B.D. oracle y lo q hace la aplicacion jsp es mostrar los registros de una tabla y despues poder hacer insert, updates y deletes. Por lo que me parece un poco peñazo estar continuamente conectandome y desconectandome y el scope es session y no tengo permitido poner botones para desconectarme.
Entonces si tienes 500 usuarios activos vas a tener 500 conexiones a la DB.....si un usuario accede a la página jsp que muestra los registros y se queda media hora sin hacer nada vas a tener una conexión desperdiciada durante media hora....mmm..
Además si utilizas alguna implementación de un pool de conexiones o utilizas un DataSource para obtener una conexión en realidad no estas continuamente conectando y desconectando. Tanto los pool como el DataSource obtienen una determinada cantidad de conexiones y cuando desde tu aplicación libera una conexión lo único que hace es devolverla al pool, no cerrarla.
>> Y donde iria la implementacion de la interfaz? en el Bean no?
Deberías tener una clase separada que implemente esa interface, y tenes que agregar una entrada tipo
<listener>
<listener-class>TuClaseQueImplementaHttPSessionListener</listener-class>
</listener>



maramonar
02 de Abril del 2004
La entrada tenes que agregarla al web.xml de tu war.