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 ...