我试图在我的EAR中发布我自己的Hibernate版本时遇到困难(而不是JBoss默认带来的版本).
然后我通过在EAR中包含一个包含以下内容的jboss-app.xml文件来使我的部署成为“作用域”:
并且,像往常一样,我将持久性单元中的持久性提供程序声明为Hibernate,如下所示:
但是,最糟糕的情况发生了.在部署时,服务器在尝试从org.hibernate.ejb.HibernatePersistence转换为JPA接口javax.persistence.spi.PersistenceProvider(由HibernatePersistence表示)时抛出ClassCastException.
这有点像WEIRD,因为我也在我的EAR中发布JPA API,因此,鉴于EAR的类优先于JBoss的类,从HibernatePersistence转换为PersistenceProvider时应该没有问题,因为它们“应该”是“在同一个班级装载机上.
如果我没有发布自己的JPA API,那么当JBoss试图找到一些JPA类时,部署会因ClassNotFoundException而失败.
任何关于为什么这个演员失败的想法?
我正在使用JBoss 5.1.0,并尝试使用Hibernate 3.5.6.Final. JPA API版本是由被提取的Hibernate版本传递的版本.
最佳答案
您可以尝试通过耳部部署来打开课程范围.对于JBoss 5.x编辑:
的JBoss /服务器/ [配置] /deployers/ear-deployer-jboss-beans.xml
并改变:
设置隔离为真.