我正在使用 GWT 并有 4 个需要 PersistenceManagerFactory 的服务实现。我遵循了 Google 关于创建单例类的建议,但是我不确定应该在服务器端代码中的何处实例化和引用此类。
类看起来是这样的
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;
}
}
但是在每个服务实现中做这样的事情似乎最终会根据我得到的错误消息创建一个唯一的单例副本“应用程序代码试图创建一个名为 transactions-optional 的 PersistenceManagerFactory,但是这个名称已经存在!”
@Override
public void addCategory(Category category) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(category);
} finally {
pm.close();
}
}
所以基本上第一个调用 addCategory 的 ServiceImpl 没问题,所有其他的都失败并出现上述错误。我在这里遗漏了一些重要的东西,我认为单例类的全部意义在于创建一个静态的 PersistenceManagerFactory。非常感谢任何对我所缺少的东西的见解。
最佳答案
PMF 类应该是顶级类,而不是内部类。
通常是它的 site.server.PMF
。
关于java - 在哪里声明具有多个服务的 JDO Singleton PersistenceManagerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688473/