Сбой makePersistent с JDO
У меня есть следующий код, развернутый на сервере механизма приложений (единственное место, где я могу тестировать JDO, к сожалению, я не могу тестировать JDO локально, потому что у меня нет локальной реализации BigTable).
final class PMF {
private static final PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF() { }
public static PersistenceManagerFactory get() { return pmf; }
}
@PersistenceCapable
class Data {
// ...
@Persistent
private static List<Store> stores = new ArrayList<Store>();
static List<Store> getStores() {
return stores;
}
}
...
Data.getStores().add(store);
writer.write("this line received OK by client.");
PMF.get().getPersistenceManager().makePersistent(Data.getStores());
writer.write("this line never received by client.");
Как показано, первая строка вывода с сервера получена на клиенте, а вторая - нет, что означает сбой makePersistent().
У кого-нибудь есть идеи, почему это происходит?
2 ответа
Возможно, тот простой факт, что ни один стандартный API персистентности для Java не обеспечивает постоянство статических полей.
Вы можете имитировать BigTable на своем локальном компьютере, выполняя код локально, используя ant или плагин eclipse appengine. Плагин eclipse также запускает datanucleus в фоновом режиме и будет отлавливать подобные вам ошибки без необходимости загружать их в appengine при каждом внесении изменений.