При попытке запустить хранилище данных в сервлете в гибкой среде Google App Engine я получаю сообщение «Для этого потока не зарегистрирована среда API». (Подробности ниже.)
Я вижу вопросы в StackOverflow о том, что это происходит на локальных машинах или модульных тестах, но это происходит в GAE в обычном сервлете.
Вот весь код моего хранилища данных, простой запрос. Нужно ли регистрировать среду API? Если да, то как?
List<String> kinds = new ArrayList<String>();
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(DatastoreServiceConfig.Builder .withImplicitTransactionManagementPolicy(ImplicitTransactionManagementPolicy.NONE));
PreparedQuery global = datastore.prepare(new Query("__kind__"));
for (Entity globalStat : global.asIterable()) {
String kindName = globalStat.getKey().getName();
kinds.add(kindName);
}
Трассировки стека
java.lang.NullPointerException: No API environment is registered for this thread.
at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:180)
at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:196)
at com.google.appengine.api.datastore.Query.<init>(Query.java:208)
at com.google.appengine.api.datastore.Query.<init>(Query.java:139)
at ...