如何指定服务器以从Java应用访问数据存储?

zek*_*e14 2 google-app-engine remoteapi google-cloud-datastore

我正在尝试使用在本地系统上运行的低级Java API从独立的Java应用程序(而不是Web应用程序或Servlet)访问Google数据存储区。

remoteapi似乎是最简单的方法。但是,我需要指定一个服务器

RemoteApiOptions options = new RemoteApiOptions()
   .server("your_app_id.appspot.com", 443)    
   .useApplicationDefaultCredential();
Run Code Online (Sandbox Code Playgroud)

如何指定服务器(...)调用以访问数据存储?我跑了

gcloud auth login
Run Code Online (Sandbox Code Playgroud)

并且我为数据存储区配置了一个项目(具有项目ID等),但没有“ app_id”,因为没有涉及任何应用。

是否有用于访问数据存储的标准服务器?还是有更好的方法从独立的Java应用程序访问数据存储区?

Ale*_*lli 7

要访问App Engine外部的Cloud Datastore,请遵循docs,该文档不涉及Remote API。该页面上给出的完整示例使用了Maven(适用于Java版本),但是,如果您不喜欢这种方式,则可以将其视为用法示例,并单独安装Google Cloud Client Library for Java;对于独立运行(不在App Engine或Compute Engine中),您将按照该页面上的示例明确授权...:

import com.google.gcloud.AuthCredentials;
import com.google.gcloud.datastore.Datastore;
import com.google.gcloud.datastore.DatastoreOptions;
import com.google.gcloud.datastore.Entity;
import com.google.gcloud.datastore.Key;
import com.google.gcloud.datastore.KeyFactory;

DatastoreOptions options = DatastoreOptions.builder()
  .projectId(PROJECT_ID)
  .authCredentials(AuthCredentials.createForJson(
    new FileInputStream(PATH_TO_JSON_KEY))).build();
Datastore datastore = options.service();
KeyFactory keyFactory = datastore.newKeyFactory().kind(KIND);
Key key = keyFactory.newKey(keyName);
Entity entity = datastore.get(key);
Run Code Online (Sandbox Code Playgroud)