我在 App Engine 中启用了会话,在部署应用程序时效果很好。我的问题是这似乎在开发模式下不起作用。我需要一些东西来在开发模式下的某个地方(磁盘、数据存储、内存)保持会话,这样我就不必每次重新启动本地服务器时都登录我的应用程序(每次更改服务器或共享代码时) .
我通常通过在 jetty-web.xml 中定义一个 HashSessionManager 来做到这一点,但显然(并且可以理解)App Engine出于安全原因明确禁用了该配置文件。
有没有人知道在 App Engine 中实现本地会话持久性的标准方法(假设存在一种方法)?
我在 appengine-web.xml 中有以下相关行:
<sessions-enabled>true</sessions-enabled>
<async-session-persistence enabled="true" />
我正在使用 App Engine SDK 的 1.6.5 版(最新)。
以下是我采取的一些步骤:
在我扩展 RemoteServiceServlet 的服务器端类中,我添加了以下行:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Added this line
System.out.println(request.getSession().getCreationTime());
...
}
我重新启动了开发模式服务器,加载了我的应用程序并为我的应用程序发出的每个请求获得了“1337796704817”,这表明请求之间正在使用相同的会话。然后,我重新启动了开发模式服务器,下一个请求产生了“1337796798184”,表明已经创建了一个新会话。
如下所述,我使用的是 Google Cloud SQL,并且在应用引擎设置中禁用了数据存储选项,尽管这在部署时似乎不会导致任何问题。此外,我在检查这些选项的情况下尝试了上述相同的步骤,并得到了相同的结果。