Hibernate Indatibilidade da Biblioteca Ehcache do segundo nível?
Pergunta
Estou usando o Hibernate 3.5.0, JBoss como 6 e LILIBASE 1.9.5.
Eu queria ativar Ehcache Hibernate Cache de segundo nível do seguinte modo:
A primeira coisa que faço é adicionar uma nova dependência ao pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.5.0-Final</version>
</dependency>
Agora, quando eu reimploy meu aplicativo, a exceção após a exceção é lançada:
Caused by: java.lang.VerifyError: (class: liquibase/database/HibernateDatabase, method: <init> signature: (Ljava/lang/String;)V) Bad type in putfield/putstatic
at java.lang.Class.getDeclaredMethods0(Native Method) [:1.6.0_18]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) [:1.6.0_18]
at java.lang.Class.getDeclaredMethods(Class.java:1791) [:1.6.0_18]
at org.jboss.deployment.AnnotatedClassFilter.hasAnnotations(AnnotatedClassFilter.java:186) [:6.0.0.20100429-M3]
at org.jboss.deployment.AnnotatedClassFilter.accepts(AnnotatedClassFilter.java:114) [:6.0.0.20100429-M3]
at org.jboss.deployment.AnnotatedClassFilter.visit(AnnotatedClassFilter.java:99) [:6.0.0.20100429-M3]
at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:407) [jboss-vfs.jar:3.0.0.CR5]
at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
...
Observe que eu não ativei o cache em persistence.xml ainda (!)
Isso toca um sino para alguém? Qualquer pista é mais que bem -vinda.
Obrigada!
Solução 2
Parece uma incompatibilidade de versão.
Na verdade, o ehcache 2.2 parece se encaixar melhor na minha configuração. (Hibernate 3.5.0 e JBoss como 6 (e LILIBASE 1.9.5)):
adicionar à persistence.xml:
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
adicionar à pom.xml:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
(Essa dependência do Maven não depende explicitamente do "hibernado", o que mantém a hierachy de dependência um pouco mais limpa.)
Outras dicas
Existe alguma outra mensagem "causada por" mais tarde?
Eu poderia ser que o LIFIBASE seja construído contra uma versão anterior do Hibernate do que você está executando e a API de hibernato mudou. Você acabou de adicionar a dependência do ehcache? Ou o hibernato também foi atualizado?
O artefato hibernate-ehcache
Não adiciona nenhum artefato de hibernato em particular, por isso não tenho certeza se é realmente a causa raiz do problema. No entanto, talvez você tenha mudado a ordem do caminho de classe (declarando -a antes do liquidbase) e você revelado o problema. Talvez você possa tentar declará -lo depois (no pom.xml).
Você também pode tentar executar a JVM com -Xverify:all
Para ver se você recebe uma mensagem mais útil.
Ou, LICIBASE RECOMPILE contra o Hibernate 3.5.x.