Tú utilizas finalize para la conexión de BBDD, pero todos los objetos de java tienen su finalize().
Si quieres modificar la conducta de la sesión al desaparecer, tendrás que crear tu propia clase extendida de HttpSession, sobreescribir su método finalize() y usarla en vez del httpSession
http://www.janeg.ca/scjp/gc/finalize.html
Otra opción sería mediante un timer recorrer cada cierto tiempo las sesiones abiertas, y cuando una desaparezca ejecutar lo que sea que necesitas. Pero tampoco me parece buena idea.