我正在尝试使用应用程序引擎开发带有后端的Android应用程序。我已经生成了端点,现在我需要在我的应用程序中进行多租户。Here documentation about multitenancy
但是我已经生成了端点,而不是如上所示的servlet。如何实现端点的多租户?
答案 0 :(得分:1)
App Engine支持几种支持命名空间的API,即数据存储,内存缓存,任务队列和搜索。关于如何计划在应用程序中使用命名空间,您的问题并不清楚。
我假设您要保存和/或检索特定命名空间中的数据,以便根据命名空间要求很好地隔离数据。我不认为您需要遵循示例中给出的Filter示例。
如果需要,可以使用启动servlet(在应用程序启动时加载的servlet)来设置特定的命名空间。随后,您需要确定命名空间值的限定条件。对于例如如果您的Cloud Endpoints通过User
参数实现安全性,那么User Id可能是名称空间ID。或者,您可以从数据存储中检索其他相关/关联数据,以确定适合命名空间ID的其他值。
仅供参考 - 在幕后,Cloud Endpoints架构也是Servlets。
答案 1 :(得分:0)
我有一个基于GAE和jsp的网络应用程序。我使用Google的UserServiceFactory为每个用户设置了命名空间。
import com.google.appengine.api.users.UserServiceFactory;
import com.google.appengine.api.NamespaceManager;
...
if (NamespaceManager.get() == null) {
// Assuming there is a logged in user.
String namespace UserServiceFactory.getUserService().getCurrentUser().getUserId();
NamespaceManager.set(namespace);
}
...
现在,我尝试更改为Google Cloud Endpoints,然后使用Endpoint API(Using Auth with Endpoints)的用户。代码看起来像这样,并且在我的测试环境中工作。
import com.google.appengine.api.users.User;
import com.google.appengine.api.NamespaceManager;
...
@ApiMethod(name = "scores.insert")
public Score insert(Score score, User user) throws OAuthRequestException, IOException {
...
if (NamespaceManager.get() == null) {
// Assuming there is a logged in user.
String namespace = user.getUserId();
NamespaceManager.set(namespace);
}
...
}