Я работаю с 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;
}
}
Но выполнение чего-то подобного в каждой реализации службы, по-видимому, в конечном итоге приводит к созданию уникальной копии синглтона на основе полученного сообщения об ошибке: «Код приложения попытался создать PersistenceManagerFactory с именем транзакции-необязательно, но копия с таким именем уже существует ! "
@Override
public void addCategory(Category category) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(category);
} finally {
pm.close();
}
}
Так что в основном первый ServiceImpl, который вызывает addCategory, в порядке, все остальные терпят неудачу с ошибкой выше. Мне здесь не хватает чего-то жизненно важного, я думал, что весь смысл синглтон-класса заключается в создании статического PersistenceManagerFactory. Любое понимание того, что мне не хватает, очень ценится.