2010-04-22 51 views
2

我正在使用GWT,並且有4個服務實現需要一個PersistenceManagerFactory。我遵循Google關於創建單例類的建議,但是我不確定該類應該在服務器端代碼中實例化和引用。何處聲明具有多個服務的JDO Singleton PersistenceManagerFactory

類看起來像這樣

import javax.jdo.JDOHelper; 
import javax.jdo.PersistenceManagerFactory; 

public final class PMF { 
    private static final PersistenceManagerFactory pmfInstance = 
     JDOHelper.getPersistenceManagerFactory("transactions-optional"); 

    private PMF() {} 

    public static PersistenceManagerFactory get() { 
     return pmfInstance; 
    } 
} 

但在每個服務實現做這樣的事情似乎要結束了創建一個基於該錯誤消息我得到單的唯一副本「應用程序代碼試圖創建一個PersistenceManagerFactory命名爲transactions-optional,但具有此名稱的一個已經存在!「

@Override 
public void addCategory(Category category) { 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    try { 
     pm.makePersistent(category); 
    } finally { 
     pm.close(); 
    } 
} 

所以基本上調用addCategory第一ServiceImpl是好的,所有其他失敗,上述錯誤。我在這裏丟失了一些至關重要的東西,我認爲singleton類的全部重點是創建一個靜態的PersistenceManagerFactory。對我缺少的任何見解都非常感激。

+0

必須有別的事情正在進行。你的PMF類看起來正確。 – 2010-05-06 18:33:03

+0

你有多個PMF類的副本嗎?這是一個內部類嗎? – 2010-05-06 18:41:58

回答

0

PMF類應該是頂級類,而不是內部類。

通常它的site.server.PMF

+0

@Zach我很好奇。那是你的問題嗎?還是隻是幫助你找出別的東西? – 2010-05-26 18:08:23

+0

總的來說,我很困惑單身人士是如何使用的,他們是如何實例化的等等。你的文章幫助我理解了單身生態系統。 – 2010-07-14 20:21:29

+0

@錯誤精彩,樂於幫助別人。 – 2010-07-15 18:50:25