Websphere 8.0.0.11
休眠4.2.21。最终
我发现了很多与此问题有关的问题,但没有一个对我有用。
如果我在Websphere中部署应用程序,则可以正常工作。
但是,我们定义了一个共享库,其中包含所有第三方库(spring,hibernate,javassist等),以使我们的WAR更加薄。
这样,在部署过程中,我们将瘦WAR与该Websphere共享库相关联。
关键是当我们以这种方式部署应用程序时,会抛出ClassCastException Hibernate exception _$$_javassist_856 cannot be cast to javassist.util.proxy.Proxy
。
我已经在websphere控制台中检查了已加载的jar,在类路径中只能看到一个javassist jar(3.18.1-GA)。
为什么会这样呢?
更新
我也尝试过使用PARENT_FIRST和PARENT_LAST类加载。
更新2
我刚刚发现Websphere正在加载自己的javassist jar:
URL location = ProxyFactory.class.getProtectionDomain().getCodeSource().getLocation();
logger.info("{}", location);
打印:
file:/opt/IBM/WebSphere/AppServer/plugins/javassist.jar
最佳答案
在尝试了几乎所有东西之后,我在S.O.没有成功,我决定将Hibernate降级到4.1.12.Final版本。这是与Websphere 8.x兼容的最高4.x版本。