0

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

1 に答える 1

2

フレキシブル環境でデータストアを使用するには、クラウド データストアを使用する必要があります。「古い」API を使用してデータストアを使用する場合
は、Compat環境を使用できます。

于 2016-10-20T10:00:40.213 に答える