java - ClassCastExceptions 由于在 WebSphere 8.5.5 应用程序容器中升级到 hibernate 4.2.8

标签 java hibernate websphere classloader javassist

我们最近将 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/

相关文章:

hibernate - 我如何知道 Grails 模型自检索后是否已更改?

mysql - 失败 : create table using hibernate 2

java - Websphere 中的 String.class 在哪里

java - 升级到 WAS 8 后 ServletWrapper 未捕获异常

java - maven 3.3 支持 Websphere 8.5.5 - pom.xml

java - Spring - Thymeleaf - 404 错误

java - 如何避免在 java spring 中使用同一 session 并发访问 Controller 方法?

java - Spring Security - 访问被拒绝(用户不是匿名的)spring-security-core-4.0.3.RELEASE

java.awt -- 当java输出图像到我的显示器(屏幕)时,输出到显示器卡的文件在哪里?

hibernate - Grails/GORM/Hibernate:引用未保存的 transient 实例的域实例的属性列表