Websphere 7 EntityManagerFactory创建问题

时间:2010-05-05 16:31:04

标签: jpa ejb-3.0 websphere entitymanager

我正在开发一个maven项目,该项目使用seam 2.2.0,hibernate 3.5.0-CR-2作为JPA提供程序,DB2作为数据库服务器,Websphere 7作为应用程序服务器。现在我面临着以下问题:

  • 在我的EJB中也被视为SEAM组件我想使用EJB容器中的EntityManager(@PersistenceContext private EntityManager em)而不是Seam的EntityManager(@In private EntityManager em)。但这是问题,我无法使用@PersistenceContext获取EntityManager。

在服务器上记录,它无法创建EntityManagerFactory并获取ClassCastException:

  

java.lang.ClassCastException:org.hibernate.ejb.HibernatePersistence与javax.persistence.spi.PersistenceProvider不兼容

经过大量的调试和在论坛上搜索后,我假设问题是Websphere没有使用Hibernate JPA提供程序。

是否有人遇到此问题并有解决方案?我为我的应用程序配置了WAS类加载器顺序,首先使用应用程序类加载器加载类,然后在应用程序中添加所有必需的jar,如下所示:WAS InfoCenter: Features for EJB 3.0 development 。如有必要,我将发布我的persistence.xml,components.xml文件和堆栈跟踪。

我发现这里也讨论过这个问题:

任何提示都会有用 提前谢谢!
米哈埃拉

1 个答案:

答案 0 :(得分:4)

我怀疑你已经在你的EAR中包含了JPA API jar。当使用“parent last”(也称为“首先使用应用程序类加载器加载类”)时,您的应用程序正在加载javax.persistence.spi.PersistenceProvider类的第二个副本,该副本与WAS中包含的副本不兼容。您需要从EAR中删除这些类,或者更改回“父优先”委派模式。