我发现“Hibernate不能与JAX-RS的参考实现相结合。”在链接http://lists.jboss.org/pipermail/hibernate-issues/2009-May/015628.html
上所以我无法将JAX-RS(jersey)与hibernate结合起来,是否有人知道这方面的工作?
答案 0 :(得分:13)
邪恶的根源是cglib。将cglib-2.1.3.jar替换为cglib-nodep-2.1_3.jar并删除hibernate的asm * .jar文件。
答案 1 :(得分:5)
将 Jersey ( Java REST 框架)与Hibernate结合使用需要对Maven的 pom.xml 文件进行一些调整。问题是Hibernate使用的ASM 1.5.3
与 Jersey 使用的ASM 3.1
不兼容。
您需要做的是从 Hibernate 中排除一些传递依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
<exclusions>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm-attrs</artifactId>
</exclusion>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
</exclusions>
</dependency>
然后,您需要包含正确版本的ASM:
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
</dependency>
最后,您需要包含一个CGLib的nodep版本,它从ASM版本1.5.3重新打包类:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.1_3</version>
</dependency>
来源:http://blog.idm.fr/2009/04/jersey-hibernate-conflict.html
答案 2 :(得分:3)
升级到Hibernate 3.3.2或更高版本。
如果您按照生成该消息的bug report链接,则表示最新版本的Hibernate(自3.3.2开始)使用不同的字节码操作包(Javassist),消除导致问题的ASM冲突。
答案 3 :(得分:2)
解决方案:ASM 3.1和HIbernate与JAX-RS的兼容性问题
取下以下罐子
1 asm-attrs.jar
2 asm.jar
3 cglib-2.1.3.jar
添加以下jar
1 asm-3.1.jar
2 cglib-nodep-2.1_3.jar