2013-04-24 29 views
1

我們正在WAS 8.5上運行EAR,並且我們的每個DAO都重複了31次。注意到我們的persistence.xml有30個JNDI數據源,我測試了減少數量,實際上減少了重複計數。Websphere上每個持久性單元生成的重複ClassLoaders

但我已經嘗試刪除連續的每一個多餘的線,我仍然得到重複。儘管刪除最後一行給了我一個NestedJarException。

<persistence-unit name="unitTest" 
      transaction-type="JTA">  
      <jta-data-source>jdbc/Testing/Ds</jta-data-source> 
      <mapping-file>META-INF/default-mappings.xml</mapping-file> 
      <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    </persistence-unit> 

有沒有人知道任何可能導致我的EJB類爲每個持久性單元重複的東西?

問候

+0

你是說你有30個不同的數據源?你使用它們中的每一個? – 2013-04-24 15:13:10

+0

是的,每個客戶都有自己的數據庫。 – djb 2013-04-25 08:40:59

回答

1

如果你檢查JPA 2.0 specification頁76項目3.2「的實體實例的生命週期 」你看下面:

3.2實體實例的生命週期本節介紹了用於管理實體EntityManager的操作實例的生命週期。

實體實例可以被定義爲新的,被管理的,被分離或被刪除。

•新實體實例沒有持久性 標識,但尚未與持久性上下文相關聯。

•A 受管實體實例是一個具有持久性標識的實例, 當前與持久性上下文相關聯。

•分離的 實體實例是持久性標識與非持久性上下文相關聯(不再與 關聯)的實例。

•已刪除的 實體實例與持久標識,與persis-唐塞上下文關聯 ,將從數據庫 交易時被刪除提交一個實例。

比我想象你的情況意味着你有30個JPA持久對象每一個映射爲1個持久上下文(持久化標識)指向數據庫中的每一個,你可能有1分離和/或新的無持久的身份。

發生這種情況是因爲規範如何確定應該實施實體實例生命週期。

Regards

+0

這涉及管理實體實例。不幸的是,就我而言,它是被重複的EJB。 EJB不是持久化對象 - 當它們被使用(例如查詢數據庫)時,這會導致EntityManagerFactory提供一個EntityManager,將根據需要使用這個EntityManager,這就是上述內容的相關性。 – djb 2013-04-29 09:53:37

相關問題