[VRaptor] @PostConstruct e @PreDestroy [RESOLVIDO]

Galera estou tendo um problema quanto as annotations @PostConstruct e @PreDestroy fiz de acordo com o forum caelum e conforme diversas outras fontes mas nada, estou tentando implementar em um projeto a parte quanto a controle de sessão no DB2 conforme código abaixo:

[code]import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
public class HibernateUtil implements ComponentFactory {

private static SessionFactory sessionFactoryDb2;
private static Configuration confDb2 = new Configuration();
private Session session;

static {
	sessionFactoryDb2 = confDb2.configure().buildSessionFactory();
}

private HibernateUtil() {
}

/**
 * ThreadLocal que controla a sessão.
 */
public static final ThreadLocal<Session> threadSession = new ThreadLocal<Session>();

@Override
public Session getInstance() {
	return threadSession.get();
}

@PostConstruct
public void create() {
	this.session = sessionFactoryDb2.openSession();
	threadSession.set(session);
}

@PreDestroy
public void destroy() {
	threadSession.get().close();
	if (session != null)
		session.close();
}

}[/code]

O problema é que a o objeto session sempre vem nulo, isso ocorre porque por algum motivo as annotations acima não estão sendo chamadas como deveria e a session não está sendo aberta. Em um projeto separado (Maven project) apenas com Spring e uma simples injeção ele ao dar um load() no .xml do Spring ele já chama sem problemas essas annotations…

Via Provider até conseguimos fazer funcionar como deveria mas o problema é que temos vários projetos seprados e essa parte está em um projeto em comum com todos os outros ou seja ele não é um webProject logo não tenho um web.xml para registrar o meu provider, consequencia disso não consigo rodar os meus JUnits e estou tendo problemas nas ferramentas de monitoração que usamos aqui (Hudson e Sonar)…

Alguém sabe como resolvo esse problema ?

abs e obrigado.

não coloque a sessão na threadLocal!! retorne a session que está no atributo da classe.

receba as Sessions nos construtores das classes e deixe o vraptor injetá-las pra vc.

daí vc não vai ter esse problema do null.

Mesmo que essas classes estejam fora do projeto web, nada impede de vc receber a session no construtor e fazer o código do jeito certo, sem roubar usando thread locals.

Legal Lucas funcionou… Vlw