Second Level Cache no Hibernate, Lutando por uma performance superior!

Ola Pessoal!

             Estou tentando ativar o second level cache do hibernate, mas nao estou conseguindo, obtenho uma serio de erros muito estranha... sem o cache, tudo funciona normalmente, porem  com o cache habilitado, tenho uma sequence grande de erros, aqui esta o meu hibernate.properties
# Configuracao do Hibernate para Conexao com base de dados

#Configuracao para PostGres
hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.url jdbc:postgresql://localhost:5432/infotx
hibernate.connection.username postgres
hibernate.connection.password wiling250589*#
hibernate.show_sql true
hibernate.format_sql true
transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory
hibernate.cache.use_query_cache true
hibernate.cache.provider_class org.hibernate.cache.EhCacheProvider
#Aqui as Configuracoes do C3p0, um controlador de pools de conexao
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50

e aqui esta o meu ehcache.xml

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        />

    <cache name="br.com.infolog.infotx.modelo.Cidade"
        maxElementsInMemory="300"
        eternal="true"
        overflowToDisk="false"
        />
        
    <cache name="br.com.infolog.infotx.modelo.Bairro"
        maxElementsInMemory="5000"
        eternal="false"
        overflowToDisk="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        />
</ehcache>

estou usando hibernate 3.3.1 e hibernate annotations 3.4.0 o meu ehcache.xml esta no classpatch, tambem coloquei la o jar do ehcache, abaixo segue a lista de erros que estou tendo, se alguem puder me ajudar pessoal, ficarei muito grato! pois nao sei o que pode ser isso, inclusive ja tentei outros caches como oscache, mesma coisa…

827 [main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.EhCacheProvider
Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.infolog.infotx.dao.DaoFactory.<init>(DaoFactory.java:27)
	at br.com.infolog.infotx.dao.DaoFactory.getInstance(DaoFactory.java:32)
	at br.com.infolog.infotx.persistencia.Teste.main(Teste.java:10)
Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
	at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:412)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:271)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.infolog.infotx.persistencia.HibernateUtil.<clinit>(HibernateUtil.java:22)
	... 3 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:407)
	... 8 more
Caused by: org.hibernate.cache.CacheException: could not instantiate CacheProvider [org.hibernate.cache.EhCacheProvider]
	at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:66)
	... 13 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EhCacheProvider
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:123)
	at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:63)
	... 13 more

Antecipadamente agradeço a boa vontade do pessoal! Abraço a todos

Veja a mensagem de erro:

Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EhCacheProvider

Voce esqueceu de colocar o jar do ehcache no classpath.

Rafael

E mais uma coisa, não se esqueça de anotar as entidades com Cache, senão , nada feito :-).
Exemplo:

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

Bom dia Pessoal, obrigado pelas respostas, o jar do ehcache eu coloquei sim no classpath, tentei anotar as classes com a anotacao de cache tambem mas estranho que tenho o mesmo erro… sera que falta algum jar para que o ehcache possa funcionar? pois no hibernate so tem um jar do ehcache, valeu mesmo pelas respostas pessoal, agradeço muito mesmo, mas voces acham que poderia existir uma outra causa para este erro?

vou postar todo o stacktrace incluindo logs do hibernate quando estou inserindo a entidade no banco, e mais uma duvida, a anotacao @Cache, é realmente esta: import org.hibernate.annotations.Cache; ?

2 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.4.0.GA
24 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1
43 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.c3p0.timeout=1800, hibernate.connection.driver_class=org.postgresql.Driver, hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider, hibernate.c3p0.max_statements=50, hibernate.c3p0.max_size=20, hibernate.cache.use_query_cache=true, hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect, transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory, hibernate.format_sql=true, hibernate.c3p0.min_size=5, hibernate.connection.username=postgres, hibernate.connection.url=jdbc:postgresql://localhost:5432/infotx, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, hibernate.connection.password=****}
46 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
53 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
158 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.1.0.GA
187 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
281 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: br.com.infolog.infotx.modelo.Cidade
341 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity br.com.infolog.infotx.modelo.Cidade on table Cidade
427 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: br.com.infolog.infotx.modelo.Bairro
427 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity br.com.infolog.infotx.modelo.Bairro on table Bairro
544 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
555 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
555 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
555 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
576 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/infotx
576 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****}
804 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 8.3.5
804 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.3 JDBC4 with SSL (build 603)
826 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect
834 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
839 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
839 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
839 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
840 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
840 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
840 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
841 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled
841 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
842 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
842 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled
842 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
842 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
842 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
845 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
845 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
845 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
845 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
845 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: enabled
851 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
851 [main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.EhCacheProvider
Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.infolog.infotx.dao.DaoFactory.<init>(DaoFactory.java:27)
	at br.com.infolog.infotx.dao.DaoFactory.getInstance(DaoFactory.java:32)
	at br.com.infolog.infotx.persistencia.Teste.main(Teste.java:10)
Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
	at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:412)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:271)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.infolog.infotx.persistencia.HibernateUtil.<clinit>(HibernateUtil.java:22)
	... 3 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:407)
	... 8 more
Caused by: org.hibernate.cache.CacheException: could not instantiate CacheProvider [org.hibernate.cache.EhCacheProvider]
	at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:66)
	... 13 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EhCacheProvider
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:123)
	at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:63)
	... 13 more

Muito obrigado pela atençao pessoal!

Será que o jar está sendo exportado para sua pasta web-inf/lib quando vc manda para o servidor??? Por ser que por alguma configuração o jar não foi parar lá…

Bom dia Pessoal!

         Agradecido por todas as sujestoes! depois que eu fiz um exame para tentar encontrar a classe de cache e nao consegui, percebi que na verdade o nome do cache estava incorreto! talvez pela versao do ehcache, pois o nome do cache na verdade é 
net.sf.ehcache.hibernate.EhCacheProvider

se alguem passar pela mesma situacao, ai vai uma dica! abraços pessoal!