2010-05-05 64 views
1

我正在使用seam 2.2.0,hibernate 3.5.0-CR-2作爲JPA提供程序,DB2作爲數據庫服務器和Websphere 7作爲應用程序服務器的maven項目。現在我面臨着以下德問題:Websphere 7 EntityManagerFactory創建問題

  • 在我的EJB也被視爲Seam組件我想從EJB容器(@PersistenceContext EntityManager的私人EM)不Seam的EntityManager的使用EntityManager(@In EntityManager的私人EM )。但這是問題,我無法使用@PersistenceContext獲取EntityManager。

在服務器日誌它最高審計機關,它不能創建一個EntityManagerFactory的,並得到一個ClassCastException:

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

在論壇上進行了大量的調試和搜索之後,我假設問題在於Websphere沒有使用Hibernate JPA提供程序。

有沒有人遇到這個問題,並有一個解決方案?我已經爲我的應用程序配置了WAS類加載器順序,以便首先使用應用程序類加載器加載類,並且我已將所有必需的jar包裝在應用程序中,如下所示:WAS InfoCenter: Features for EJB 3.0 development。如果有必要,我會發布我的persistence.xml,components.xml文件和堆棧跟蹤。

我發現這裏也討論了這個問題:

任何暗示將是有益的。
在此先感謝!
Mihaela

回答

4

我懷疑你已經在你的EAR中包含了JPA API jar。當使用「父最後」(也稱爲「首先使用應用程序類加載器加載類」)時,應用程序正在加載與WAS中包含的副本不兼容的javax.persistence.spi.PersistenceProvider類的第二個副本。您需要從EAR中刪除這些類,或者切換回「父母第一」委派模式。

+0

謝謝你的提示。事實上,我也在我的EAR中包含了JPA API jar。這還沒有解決我的問題(無論如何,我有另一個例外),但我必須首先審查Hibernate所需的罐子和正確的範圍。 – mihaela 2010-05-06 07:47:44

+0

嗯,除非你描述它,否則我無法幫助解決你的問題:-)。也許upvote和更新您的問題描述,或接受並開始一個新的問題? – 2010-05-06 14:05:02

+0

我仍然在嘗試一些場景,只有在這之後我才能回到更清晰的描述 – mihaela 2010-05-06 14:42:00