我们最近将 hibernate 从 4.0.1
升级到 4.2.8.Final
。
Hibernate.4.2.8.Final
依赖于 javassist-3.18.1-GA
。不幸的是,websphere 是 8.5.5 未随最新的 javassist 一起提供,但这不是我的问题。我试图强制 websphere 获取我的 javassist jar,但我失败了(出于某种原因,它总是从 ${WAS_INSTALL_ROOT}/plugins
加载)。
我尝试了什么?
- 在 websphere 控制台中首先使用本地类加载器加载类(父类最后加载),WEB-INF/lib 包含最新的 javassist jar。但是应用程序不工作
- 将最新的 javassit jar 放入
${WAS_INSTALL_ROOT}/lib/ext
但没有用 - 添加了共享库并在应用程序中引用但没有成功。
- 如果我替换
${WAS_INSTALL_ROOT}/plugins
中的 javassist.jar 然后应用程序开始工作,但这不是好的解决方案,因为其他 Web 应用程序可能依赖于旧的 javassist
我的问题
我如何在 Websphere 8.5.5 中使用(或注入(inject)或引用)最新的 javassist jar?
这#blog帮助我快速解决问题。
最佳答案
你把 parent 最后放在哪里,在控制台的哪个窗口?
因为控制台中有两个地方可以将 parent 放在最后,一个在应用程序级别,另一个在 WAR 级别,这是您要选择的位置。
将“应用程序中每个 WAR 文件的类加载器”放在你选择该选项的屏幕内,单击 WAR 并将 WAR 级别的类加载器策略设置为最后一个父级:
我认为路径是这样的(现在没有控制台):
应用程序 --> 企业应用程序 --> application_instance --> Web 模块 --> Web Module_instance
看看this看看有两个地方可以设置类加载器策略,如果您找到了设置,如果它有效,或者抛出新错误,请告诉我。
有时当我们切换设置时,我们会发现新的错误,因为其他 jar 是从服务器而不是 WAR 读取的,例如 bean 验证错误等。如果你得到一个与 javassist 无关的不同错误,它可能是由那个引起的您可以随时将其发布在新问题中。
关于java - ClassCastExceptions 由于在 WebSphere 8.5.5 应用程序容器中升级到 hibernate 4.2.8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908316/