0

当尝试在 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 ...
4

1 回答 1

2

为了在灵活环境下使用数据存储,您需要使用云数据存储如果您想使用“旧”API 使用数据存储,
可以使用Compat 环境

于 2016-10-20T10:00:40.213 回答