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.