WAS 9应用配置JPA 2.0却出现Open JPA 2.2.3版本错误如何解决
WAS 9 加载非配置JPA 2.2.3版本的核心原因
- WAS 内置类库优先级更高:WebSphere Application Server 9 官方默认内置的JPA实现版本就是JPA 2.2.3,WAS默认启用「父类加载器优先」的类加载策略,会优先加载服务器自身提供的类库,优先级高于应用内配置的JPA 2.0版本,是该问题最常见的诱因。
- 服务器级JPA配置覆盖应用配置:WAS 全局配置、应用部署时的默认JPA配置优先级均高于应用代码、应用级配置文件中声明的JPA版本,若你未在WAS管理控制台手动强制指定该应用使用JPA 2.0,会默认继承服务器级的JPA 2.2配置。
- 隐式依赖传递加载:若应用引入的第三方依赖包中附带了JPA 2.2.3的API或实现类,即使你未主动声明JPA版本,类加载器也会扫描到对应版本的类并完成加载。
快速排查方法
- 登录WAS管理控制台,依次进入「应用程序 > 应用程序类型 > WebSphere 企业应用程序 > 目标应用名称 > 类加载和更新检测」,确认当前类加载顺序配置;再进入「JPA和JSF配置」栏目,查看应用绑定的JPA规范版本。
- 可通过
ibm-web-ext.xml配置文件查看应用自定义的类加载、JPA相关配置,也可使用WAS自带的类加载诊断工具,定位JPA类的具体加载来源。
内容的提问来源于stack exchange,提问作者SumiSujith
相关产品推荐
相关产品推荐

