JSF gerenciamento de sessão

Galera é o seguinte:

Estou fazendo um programa para empresa onde trabalho que é necessario possibilitar ao usuario o download de um relatorio. O relatorio esta pronto, e eu ja consigo fazer um download, mas nao da maneira correta. Pois para fazer o download de um arquivo preciso salva-lo em algum local do servidor (onde o programa será executado) para que o usuario possa baixa-lo para sua maquina, e apos este download preciso deletar este arquivo. Eu tive a ideia de deletar o arquivo quando a sessao do usuario for fechada, ai se o arquivo ainda estiver em uso eu coloco ele em uma lista e vou tentando deletar os arquivos desta lista de tempos em tempo.

O grande problema é: Tem como eu executar um metodo logo depois que a sessao do usuario foi fechada? Se sim, como eu faria isso?

Espero que alguem possa me ajudar.

Vc pode implementar um listener do httpsession.

toda vez que alguém fizer logout esse método será executado:
http://www.java2s.com/Tutorial/Java/0400__Servlet/ServletHttpSessionListener.htm

Cara tentei fazer o listener aqui mas tive um problema… Quando eu abro o programa o metodo sessionCreated(HttpSessionEvent se) é chamado e faz tudo que tinha que fazer blz… Mas quando eu fecho a aba onde esta sendo executado o programa, ou fecho o browser o metodo sessionDestroyed(HttpSessionEvent se) - que é o que eu preciso realmente - não é chamado… Vc sabe pq isso pode estar acontecendo?

Pq fechar browser não mata sessão.

Ou vc cria um método que chama session.invalidate() ou você reduz o tempo da sessão para que o próprio containner a finalize.

Pesquisa no google: “como finalizar sessão java” vc vai ver que várias pessoas já confabularam sobre o assunto.

Mas lembre-se: “Fechar janela, não mata sessão” [=

O cara valeu mesmo… Eu mudei o tempo para a sessao expirar e ai comecou a chamar o método…

Brigado mesmo

Por nada chefe! [=