Трассировка стека мало чем помогла, но одной из причин не инициализации PersistenceManagerFactory является то, что она не смогла найти единицу постоянства, указанную вами в методе JDOHelper.getPersistenceManagerFactory(String)
.
например, если ваши PMF get()
метод выглядит следующим образом:
public static synchronized PersistenceManagerFactory get() {
if(pmfInstance == null) {
pmfInstance = JDOHelper.getPersistenceManagerFactory(
"transactions-optional");
}
return pmfInstance;
}
Тогда у вас должен быть файл jdoconfig.xml в вашем пути к классам (например, WEB-INF / classes), который определяет единицу сохраняемости следующим образом: (с тем же именем, которое вы использовали вgetPersistenceManagerFactory).В этом случае «транзакции необязательны»
<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="false"/>
</persistence-manager-factory>