我正在使用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。對我缺少的任何見解都非常感激。
必須有別的事情正在進行。你的PMF類看起來正確。 – 2010-05-06 18:33:03
你有多個PMF類的副本嗎?這是一個內部類嗎? – 2010-05-06 18:41:58