Oi gente, tenho uma aplicação web que utilizao hibernate, configurei o hibernate usando o arquivo hibernate.properties, dentro dele setei os valores para o C3P0, porém quando inicio minha aplicação no console do Tomcat não aparece nenhuma mensagem indicando que o C3P0 foi iniciado.
Testei com outro aplicativo que era configurado por xml, e aparecia no log do tomcat que o C3P0 foi iniciado, tenho que especificar algo para poder iniciar o C3P0?
Se você configurou o C3PO na SessionFactory do Hibernate, ele está sendo iniciado sim.
Não configurei na SessionFactory, pq segundo o link abaixo
http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/session-configuration.html
ele simplesmente fala que é so colocar o c3p0 como configuração dentro do hibernate.properties, mas no console do Tomcat eu não vejo nenhuma dizendo que ele esta funcionando, ao contrario do q vi quando se usa xml, ele exibe as configurações no console do Tomcat(como o pool foi iniciado, etc…)
[quote=fabiobh]Não configurei na SessionFactory, pq segundo o link abaixo
http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/session-configuration.html
ele simplesmente fala que é so colocar o c3p0 como configuração dentro do hibernate.properties, mas no console do Tomcat eu não vejo nenhuma dizendo que ele esta funcionando, ao contrario do q vi quando se usa xml, ele exibe as configurações no console do Tomcat(como o pool foi iniciado, etc…)[/quote]
E você depois deve adicionar essa configuração na sessionfactory.
Agora vi no log do hibernate
872 [http-8080-3] INFO org.hibernate.cfg.Configuration - configuring from resource: br/salesianos/util/hibernate.cfg.xml
872 [http-8080-3] INFO org.hibernate.cfg.Configuration - Configuration resource: br/salesianos/util/hibernate.cfg.xml
1329 [http-8080-3] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
.
.
.
3157 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
Ainda não estou usando o C3P0, Essa configuração deve ser adicionada onde?
Parece que não configurei o Session Factory, como configuro então, pq parece q ta null?
To meio perdido…
classe HibernateUtil
public class HibernateUtil {
private static final SessionFactory factory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
AnnotationConfiguration cfg = new AnnotationConfiguration();
try {
cfg.addAnnotatedClass(Pessoas.class);
cfg.addAnnotatedClass(Estado.class);
cfg.addAnnotatedClass(Cidade.class);
cfg.addAnnotatedClass(Inspetoria.class);
cfg.addAnnotatedClass(Familia_Salesiana.class);
cfg.addAnnotatedClass(Comunidade.class);
cfg.addAnnotatedClass(Obra.class);
cfg.addAnnotatedClass(Hist_Comunidade_Obra.class);
cfg.addAnnotatedClass(Salesianos.class);
cfg.addAnnotatedClass(Separacao.class);
cfg.addAnnotatedClass(Hist_Separacao.class);
cfg.addAnnotatedClass(Parentesco.class);
cfg.addAnnotatedClass(Eventos.class);
cfg.addAnnotatedClass(Hist_Eventos.class);
cfg.addAnnotatedClass(Sacramentos_Ministerios.class);
cfg.addAnnotatedClass(Diocese.class);
cfg.addAnnotatedClass(Bispos.class);
cfg.addAnnotatedClass(Paroquia.class);
cfg.addAnnotatedClass(Hist_Diocese_Bispo.class);
cfg.addAnnotatedClass(Formacao_Religiosa.class);
cfg.addAnnotatedClass(Hist_Formacao_Religiosa.class);
cfg.addAnnotatedClass(Sistemas.class);
cfg.addAnnotatedClass(Cargo.class);
cfg.addAnnotatedClass(Hist_Comissao.class);
cfg.addAnnotatedClass(Hist_Votos.class);
cfg.addAnnotatedClass(Tipo_Producao.class);
cfg.addAnnotatedClass(Producao_Intelectual.class);
cfg.addAnnotatedClass(Hist_Graduacao.class);
cfg.addAnnotatedClass(Hist_Comunidade.class);
cfg.addAnnotatedClass(Hist_Salesianos_Obra.class);
cfg.addAnnotatedClass(Hist_Salesiano_Paroquia.class);
cfg.addAnnotatedClass(Hist_Sacramentos_Ministerios.class);
cfg.addAnnotatedClass(Usuario.class);
cfg.addAnnotatedClass(Categoria.class);
cfg.addAnnotatedClass(Pais.class);
cfg.addAnnotatedClass(Hist_Inspetoria.class);
cfg.addAnnotatedClass(Hist_Categoria.class);
cfg.addAnnotatedClass(Atividade.class);
cfg.addAnnotatedClass(Hist_Atividades_Obra.class);
cfg.addAnnotatedClass(Hist_Salesiano_Familia.class);
cfg.addAnnotatedClass(Celebracao.class);
return cfg.buildSessionFactory();
}
catch (Exception e) {
e.printStackTrace();
return cfg.buildSessionFactory();
}
}
public static Session getSession() {
return factory.openSession();
}
}
Como você está usando a forma programática, pode fazer assim:
cfg.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
cfg.setProperty("hibernate.connection.url","jdbc:postgresql://localhost/mydatabase");
...
Mas isso eu passei no arquivo hibernate.properties
Agora acho q consegui ativar o C3P0
INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@a92ceed4 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a70841f9 [ acquireIncrement -> 4, acquireRetryAttempts ->...
O que tava faltando era isso
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
Porém deu outro erro
Exception in thread "Timer-0" java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$AsyncTestIdleResourceTask
Apesar do erro a aplicação continua funcionando normalmente, ele não esta localizando a classe?
Mas eu tenho o C3P0 no meu classpath, tem ideia do pq deste erro?
Talvez seja problema em relação a versão. Descompacta o seu C3PO e confira se existe essa classe nele.