Olá, Pessoal.
Estou criando um projeto com JPA stand alone, usando spring somente para a parte mvc. Porém, estou tendo problema com o pool de conexões com o banco de dados: a cada requisição HTTP o pool é iniciado novamente e conexoes são perdidas.
18/01/2011 10:58:49 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
INFO: Initializing c3p0 pool...
Hibernate:
select
..............
18/01/2011 10:58:52 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
INFO: Initializing c3p0 pool...
Hibernate:
select
................
Me parace que o meus controladores estão com escopo de requisição. Mas o default não é singleton? Mas enfim, ja tentei colocar em cada método: @Scope(BeanDefinition.SCOPE_SINGLETON) e nada.
Parece que o Persistence.createEntityManagerFactory(“Teste”); esta sendo chamado várias vezes!
Segue o código da minha estrutura de controladores:
public abstract class BaseController <T extends Serializable> {
private static final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("Teste");
protected EntityManager createEntityManager() {
return entityManagerFactory.createEntityManager();
}
public abstract Class <T> getControlledClass();
@RequestMapping(method = RequestMethod.GET)
@Scope(BeanDefinition.SCOPE_SINGLETON)
public @ResponseBody ExtDataPacket retrieveAll() throws Exception {
EntityManager entityManager = createEntityManager();
try {
RepositoryIF<String, T> repositoryL = new GenericJPADAO<String, T>(entityManager, getControlledClass());
return ExtDataPacketFac.createSuccessPacket(repositoryL.retrieveAll());
}catch (Exception e) {
throw e;
}finally {
entityManager.close();
}
}
_____________________________________
@Controller
@RequestMapping(value = "/usuarios")
@Scope(BeanDefinition.SCOPE_SINGLETON)
public class UsuarioController extends BaseController <Usuario> {
public Class<Usuario> getControlledClass() {
return Usuario.class;
}
}
Conto com a ajuda de vocês.