我想不使用內置的Websphere 7 jpa插件,而是使用應用程序WEB-INF/lib/open-jpa 2和專有的持久性提供程序。我無法安裝Websphere的OSGI和JPA 2功能包。websphere 7和(基於應用程序)open-jpa 2
最初,我只是試圖加載persistence.xml(版本=「2」不支持)而得到一個sax解析錯誤。這個錯誤是由open-jpa 1.2.3中的一個類拋出的。當我運行websphere/appserver/bin/wsjpaversion.bat時,會顯示open-jpa 1.2.3 jar文件。默認情況下,它會覆蓋應用程序中的open-jpa 2 jar。我創建了一個共享庫,其中包含open-jpa 2 jar,並檢查此配置選項:'爲此共享庫使用隔離的類加載器'。我將我的應用程序類加載器設置爲最後加載父對象,併爲其分配新的共享庫資源。 '版本2'錯誤消失了,但還有另一個問題。當我嘗試初始化一個EntityManager我得到一個錯誤:
Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
... 2 more
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider
at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110)
... 11 more
一個細節:persistence.xml中內,provider元素被設置爲私有PersistenceProviderImpl不是缺省的WebSphere持久性提供。那麼這個websphere默認來自哪裏以及如何阻止它呢? (另一個重要的注意事項:當我完全刪除persistence.xml中,我得到了同樣的錯誤)
謝謝
不知道這是否會有所幫助,但你可以改變的類加載器的政策PARENT_LAST(不推薦作爲默認,但如果你是被迫您可能不得不這樣做) –
我有同樣的問題。任何解決方案 –