当尝试在 Google App Engine 灵活环境中的 Servlet 中运行 Datastore 时,我得到“没有为此线程注册 API 环境”。(详情如下。)
我在 StackOverflow 上看到有关本地机器或单元测试中发生这种情况的问题,但这发生在 GAE 中的常规 Servlet 中。
这是我的全部数据存储区代码,一个简单的查询。我需要注册 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 ...