Java Google appengine在多租户应用程序中创建单个实例,并且不允许设置其他租户

Java Google appengine在多租户应用程序中创建单个实例,并且不允许设置其他租户,java,google-app-engine,namespaces,google-cloud-endpoints,multi-tenant,Java,Google App Engine,Namespaces,Google Cloud Endpoints,Multi Tenant,在multitenant中,当其他用户试图通过不同的实例访问应用程序时,一旦设置了名称空间,就会创建应用程序实例。除了具有公共名称的条目外,还会执行其他操作 示例:如果我使用名称空间country1登录应用程序,然后尝试使用country2和country1中具有相同密钥的country2用户登录,则尝试登录时会检查其凭据(从country1开始),因此它会给出错误的密码。 如果用户仅在country2中尝试登录,则登录成功,但现在如果搜索comman密钥,则会给出country1的结果 总的来

在multitenant中,当其他用户试图通过不同的实例访问应用程序时,一旦设置了名称空间,就会创建应用程序实例。除了具有公共名称的条目外,还会执行其他操作

示例:如果我使用名称空间country1登录应用程序,然后尝试使用country2和country1中具有相同密钥的country2用户登录,则尝试登录时会检查其凭据(从country1开始),因此它会给出错误的密码。 如果用户仅在country2中尝试登录,则登录成功,但现在如果搜索comman密钥,则会给出country1的结果

总的来说,一旦设置了一个名称空间,搜索命令就会给出有利于前面设置的名称空间的结果。而不是名称空间,谁应该给出彼此独立的结果


提前谢谢。非常感谢您的帮助。

您能提供更多详细信息或在这里分享一些代码吗?您在哪里设置名称空间

通常,您需要在收到请求后立即设置名称空间。例如,如果您使用的是Java,那么您应该使用过滤器来实现这一点。设置名称空间后,所有请求操作都将无缝地使用此名称空间。我不明白你为什么要改变这一点,但如果你真的需要这样做,我看不出有什么问题。。。尽管您应该非常小心,因为这种方法可能会导致非常混乱和错误的情况

我认为名称空间定义仅对单个请求有效,因此您应该有一种每次都重新定义它的机制


干杯

在我的应用程序中,我有一个superadmin场景,它可以查看所有名称空间,因此我需要根据请求设置它们。我的问题现在得到了解决,因为我在调用getPersistentManger()后设置了名称空间,所以在第一行调用时移动了namespaceManager.set,然后调用了persistent manager之后,它导致了问题,应用程序运行良好:)

在我的应用程序中,我有一个superadmin场景,可以查看所有名称空间,因此我需要根据请求设置它们。我的问题现在得到了解决,因为我在调用
getPersistentManger()
后设置了名称空间,所以在移动
NamespaceManger后,它导致了问题。在调用的第一行设置
,然后调用persistent manager,应用程序工作正常:)