Java 在何处声明具有多个服务的JDO Singleton PersistenceManagerFactory
我正在使用GWT,有4个服务实现需要PersistenceManagerFactory。我遵循Google关于创建singleton类的建议,但是我不确定这个类应该在服务器端代码中实例化和引用到哪里 这个班看起来像这样Java 在何处声明具有多个服务的JDO Singleton PersistenceManagerFactory,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我正在使用GWT,有4个服务实现需要PersistenceManagerFactory。我遵循Google关于创建singleton类的建议,但是我不确定这个类应该在服务器端代码中实例化和引用到哪里 这个班看起来像这样 import javax.jdo.JDOHelper; import javax.jdo.PersistenceManagerFactory; public final class PMF { private static final PersistenceManage
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;
}
}
但是在每个服务实现中执行类似的操作似乎最终会根据错误消息“I get”创建一个singleton的唯一副本应用程序代码试图创建一个名为transactions的PersistenceManagerFactory(可选),但具有此名称的副本已经存在
@Override
public void addCategory(Category category) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(category);
} finally {
pm.close();
}
}
因此,基本上第一个调用addCategory的ServiceImpl是正常的,其他所有调用都会失败,出现上述错误。我在这里遗漏了一些重要的东西,我认为singleton类的全部要点是创建一个静态PersistenceManagerFactory。非常感谢您对我所缺少的任何见解。PMF类应该是顶级类,而不是内部类
通常它的site.server.PMF.PMF类应该是顶级类,而不是内部类
通常是它的site.server.PMF.肯定还有别的事情发生。你的PMF类看起来正确。你有多份PMF类的副本吗?这是一个内部类吗?肯定还有别的事情发生。你的PMF类看起来正确。你有多份PMF类的副本吗?“这是一门内部课程吗?”扎克,我很好奇。这就是你的问题所在,还是这只是帮你弄明白了一些其他的事情?总的来说,我不知道单例是如何使用的,它们是如何被实例化的等等。你的帖子帮助我理解了单例生态系统。@Zach我很好奇。这就是你的问题所在,还是这只是帮你弄明白了其他一些事情?总的来说,我对单例是如何使用的,它们是如何实例化的等等感到困惑。你的帖子帮助我理解了单例生态系统。