对于我的应用程序,我需要将休眠与 apache cxf 一起使用。问题是在我将休眠配置为 apache cxf 后,应用程序没有启动。它给出了一个错误,说它无法从 springframework(我用来创建 factorySession)中找到 LocalSessionFactoryBean 类。我是 apache cxf 的新手,所以这可能是我的错误。你们中的任何人都可以告诉我使用 apache cxf 配置休眠的最佳方法是什么。
提前致谢
Mickael Istria 写道: 您的问题可能与“asm”依赖项的冲突有关。事实上,CXF 使用比 hibernate 更新的“cglib”版本,它本身使用更新的“asm”,因此在将它们集成在一起时有时会导致问题(NoSuchMethodError 等异常)我使用的解决方法是替换旧的 cglib(和它的依赖项)由类路径中的 cglib-nodep.jar 进行,这对于 Hibernate 来说是可以的,并且不需要旧的“asm”。
如果您使用 Maven,此示例应该可以帮助您了解如何解决此类冲突:
<dependency>
<!-- This artifacts adds hibernate as a dependency -->
<groupId>org.ow2.bonita</groupId>
<artifactId>bonita-server</artifactId>
<version>4.0.1</version>
<scope>test</scope>
<exclusions>
<exclusion> <!-- Then remove the dependency to cglib to avoid
conflicts with CXF's asm -->
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Replaced old cglib by cglib-nodep -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.1_3</version>
</dependency>
我在这里找到了解决方案:http: //mail-archives.apache.org/mod_mbox/cxf-users/200901.mbox/%3C7d456d960901281109t3fbd721egddad5ca072ed5af@mail.gmail.com%3E
为您的服务层使用 CXF,并在后端保持休眠状态。它不应该真正干扰 spring 或 hibernate 正在做什么。
这看起来确实像一个类路径问题,在添加 CXF 时,您不知何故从类路径中丢失了休眠 jar。那个缺失的 bean 是一个休眠类。