Como interceptar eventos de associação de objetos ao escopo da aplicação

Pessoal,

estou com o seguinte problema: armazeno um objeto no contexto de aplicação pelo FacesContext através do seguinte código:

FacesContext contexto = FacesContext.getCurrentInstance();
Application aplicacao = contexto.getApplication();
aplicacao.createValueBinding("#{applicationScope.nomedoobjeto}").setValue(contexto, this);

O objeto que eu armazeno encapsula por sua vez um objeto Searcher do Lucene que disponobiliza um método close(). Eu não entendo quase nada de Lucene, mas o cenário para resumir é que eu quero ter esse objeto Seacher - que provavelmente contém as configurações e/ou índices do Lucene - carregado uma única vez ao longo do ciclo de vida da aplicação e armazenado em memória até a aplicação ser finalizada. Isso porque não quero recarregar o objeto toda vez que for necessário utilizá-lo.

Uma solução possível seria criar esse objeto e fechá-lo respectivamete nos método jspInit() e jspDestroy() da página que o utiliza. Só que estou evitando fazer isso por achar que deva existir uma solução mais elegante.

Tentei também invocar o fechamento do objeto em um ContextListener, mas quando o mesmo é chamado, o FacesContext não existe mais.

A pergunta é: existe alguma forma do meu código ser notificado quando o FacesContext está para ser destruíudo e consequentemente os objetos mapeados em EL estão para ser também destruídos? É nesse momento que eu gostaria de invocar o close() do Searcher. Pesquisei a respeito de eventos de notificação de (de)associação de objetos dos contextos do JSF mas não achei nada a respeito. Outra possibilidade: existiria algo que “substituísse” o jspInit() e jspDestroy() no JSF?

Valeu!