Por favor, alguém poderia me dizer o que estou fazendo errado nessas duas classes? Já não sei mais o que fazer…
Pois toda vez que vou rodar minha aplicação no servidor, eu preciso dar um CTRL+F5 no browser pra ele funcionar.
package infra;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
@Component
public class CriadorDeSession implements ComponentFactory<Session> {
private final SessionFactory factory;
private Session session;
public CriadorDeSession(SessionFactory factory) {
this.factory = factory;
}
@PostConstruct
public void abre() {
this.session = factory.openSession();
System.out.println("Abre sessao");
}
public Session getInstance() {
return this.session;
}
@PreDestroy
public void fecha() {
this.session.close();
System.out.println("Fecha sessao");
}
}
package infra;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
@Component
@ApplicationScoped
public class CriadorDeSessionFactory implements ComponentFactory<SessionFactory> {
private SessionFactory factory;
@PostConstruct
public void abre() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
this.factory = configuration.buildSessionFactory();
System.out.println("Abre fabrica");
}
public SessionFactory getInstance() {
return this.factory;
}
@PreDestroy
public void fecha() {
this.factory.close();
System.out.println("Fecha fabrica");
}
}
Obrigado