O meu problema é o seguinte eu tenho um compent chamado LoginSession.
E eu tenho um serviço, que faz login/logout nele, e que salva o histórico de login/logout.
porém eu quero salvar histórico também de sessãos que expiram. Neste caso quando o login expirar o @PreDestory é ativado.
Porem neste momento eu estou fora de uma requisição, e não tenho com guardar uma factory de session, ou um session dentro de uma sessão, eu gostaria de forma estatica chamar o meu componente "NoScopedRepositoryCreator" que tem escopo de applicativo (avisando que não posso pegar uma referencia dele no construtor, pois ele não é serializavel e não tem como ser, pois ele tem uma factory dentro.).
Ai minha duvida é, como fazer, para de forma estatica, invocar um componente do VRaptor, acredito que seja via Spring, mas eu não sei que classe/método invocar para buscar a referencia.
Sei que o objeto vai existir no Spring, pois seu scopo é Application.
Abaixo segue trecho onde tenho o problema
@Component
@SessionScoped
public class LoginSession implements Serializable {
private static final long serialVersionUID = 1L;
private HistoricoLogin historicoLogin;
@PreDestroy
protected void timeout() {
if (isLogado()) {
HistoricoLogout logout = HistoricoLogout.create(historicoLogin, HistoricoLogoutMotivo.TIMEOUT);
//O PROBLEMA ESTA AQUI!!!!! ABAIXO...
//esse SpringContianer.... não existe, eu que coloquei ai para ilustrar o que quero
NoScopedRepositoryCreator repoCreator = SpringContainer.instanceFor(NoScopedRepositoryCreator.class);
Repository repo = repoCreator.crateRepository();
repo.beginRecording();
repo.add(logout);
repo.commitRecord();
repo.close();
}
}
}