google-app-engine - Google App Engine 全局变量 (ServletContext)

标签 google-app-engine jakarta-ee servlets

我正在尝试使用 JAVA 在 GAE 上构建聊天应用程序。我需要统计所有在线用户及其网络(某种聊天室),并且需要不断更新此信息。 我(错误地?)假设我可以只使用 Java 的 SerlvetContext 和 Set/Get Attribute 方法来更新在线\离线用户并与所有 servlet 共享该信息。正如我所知道的(有可爱的错误),由于 GAE 是分布式\云服务,它没有有效地实现 ServletContext.setAttribute - 这意味着我的应用程序可能运行在多个 JVM 上,并且有关 ServletContext 的信息仅共享在属于同一个 JVM 的 servlet 之间。

当然,这对我来说是个大问题。 几个问题 - 1) ServletContext 在GAE 上确实不能正常工作吗? 2)GAE 对于像我这样的初学者 Web 开发者来说是一个糟糕的选择吗?在我看来,我总是发现新的问题和不符合 Servlet\JSP 规则的东西。由于初学者学习 Servlets 已经够难了,也许 GAE 不是正确的选择? 3)我如何在 Servlet 之间共享信息?

最佳答案

如果您真的只是为了自己的目的而尝试学习 Java EE,我可能会因为您提到的原因而避免使用 GAE。这是一项非常好的服务,但是是的,它有自己的一套警告可能会妨碍您的学习。为您的目的启动一个 EC2 实例可能会更好。

就是说 - 你是对的,AppEngine 会启动和关闭实例来满足请求。如果你想要共享状态,你应该使用跨实例共享的 memcache,但是你必须管理对 memcache 对象的访问,以便多个用户同时写入它的可能性。

关于google-app-engine - Google App Engine 全局变量 (ServletContext),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210734/

相关文章:

javascript - 处理验证邮件

java - 用于依赖注入(inject)的 Google App 引擎 Dagger Bootstrap 注入(inject)

java - 使用 JSF primefaces 和 Google App Engine 数据存储的 CRUD 最佳实现是什么

java - Vaadin 6.8.4 项目无法使用 Eclipse Juno J2EE 预览版 jetty 服务器启动 - 无上下文

java - JSP MySQL Class.forName 错误

java - 需要在java中同步来自不同数据库的两个表

python - 如何在测试中清除/无效 NDB 缓存

javascript - 移动应用程序 (html5/javascript) 与 Google App Engine 通信示例

java - Servlet文件上传

java - 数据库中的用户名未显示在网页中?