2013-08-26 61 views
0

我正在使用GlassFish 3.1.2.2(由於操作系統限制,我無法升級到4)。升級GlassFish 3.1.2.2以使用JPA 2.1

我有興趣將JPA 2.0升級到JPA 2.1 GlassFish 3.1.2.2。我怎樣才能做到這一點?

+0

你有這個成功嗎?我也休眠4.3.5升級繼續,我們仍然使用glassfish 3.2.2。我想替換javax.persistence.jar,它讓我工作,但我們有多個集羣,升級此jar後,我的作業調度程序應用程序部署失敗,出現'EJB定時服務不可用'的奇怪問題。你爲此升級了哪些罐子? – deepakraut

+0

我無法升級GF 3以使用JPA 2.1,JPA 2.1需要JDK 7 因此您必須使用GF 4.關於您的問題可能與JPA無關,而與EJB版本有關。例如,如果用戶使用EJB,則定時器服務將不受支持 –

回答

4

這很可能根本不可能。 JPA 2.1是EE 7的一部分,因此不能與EE 6 GF 3.1.2.2完全集成。

1

您是否嘗試更換Glassfish中的EclipseLink和JPA jar文件?

它可能會工作,但是如果您使用託管持久性單元,它們將不公開任何JPA 2.1 API,您需要解包EntiyManager以訪問它們。

+0

是的,我嘗試更換 \ glassfish \ modules下的eclipseLink和JPA jar,而當我使用託管持久性時,它不會像您所寫的那樣工作。 我不知道如何解開EntitiyManager來訪問它們。 –

1

我在Glassfish 3.1.2.2上使用Hibernate 4.3.8(需要JPA 2.1)。

注意:我沒有使用glassfish提供的任何服務。我使用的所有庫都位於WEB-INF/lib中。

1 - 使用JPA 2.1版本覆蓋glassfish/modules/javax.persistence.jar中的所有JPA類(包javax.persistence)。你應該不能代替整個JAR,只能覆蓋類。這個JAR有一個OSGI清單和其他類必須保留在那裏。

2 - 從glassfish/modules/weld-osgi-bundle.jar刪除所有javassist類(包javasssist)。如果你使用Hibernate,這解決了可能的不兼容問題。

+0

上面的變化後,就像一個魅力 – user1999453