2016-03-08 33 views
1

我试图从独立的Java应用程序(不是Web应用程序或servlet)访问Google Datastore,使用低级Java API在本地系统上运行。如何指定服务器从Java应用程序访问数据存储?

remoteapi显示最简单的方法做到这一点。但是,我需要指定一个服务器每个

RemoteApiOptions options = new RemoteApiOptions() 
    .server("your_app_id.appspot.com", 443)  
    .useApplicationDefaultCredential(); 

如何指定服务器(...)调用来访问数据存储?我已经运行

gcloud auth login 

,我必须配置为数据存储项目(与项目ID,等等),但没有“APP_ID”,因为没有涉及到的应用程序。

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

回答

4

要访问App Engine之外的云数据存储,请按照the docs的规定进行操作,该操作不涉及Remote API。在该页面上给出的完整示例使用Maven(用于Java版本),但是,如果这不是您想要开发的方式,那么您可以将源代码作为使用示例来查看,并单独安装Google Cloud Client Library for Java;对于独立运行(不在App 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); 
+0

谢谢。我看到那个页面,但并不确定相关代码的位置。出于好奇,什么是json密钥?我看到[如何创建](https://developers.google.com/identity/protocols/application-default-credentials#whentouse),但我不知道它可能是什么(谷歌搜索没有太多)。 – zeke14

+0

@zeke14,json密钥仅仅是认证数据的一个秘密位,以json格式保存,便于从任何语言访问。 –

相关问题