【问题标题】:how to keep a counter hashmap in gwt applicatoin如何在 gwt 应用程序中保留计数器哈希图
【发布时间】:2011-11-02 07:18:22
【问题描述】:

我正在努力将不同的用户计数器存储在应用程序级别(而不是数据库)的内存中,并使计数器最多为 3 个。

我使用带有 hashmap 的单例类开发了这段代码,用于存储用户 ID 的键值对,它是计数器和时间。

初始之后,我在客户端使用这个单例类,它对计数器工作正常,但是当刷新浏览器时,创建了一个新的单例对象。

我搜索了一下,发现出于安全原因,javascript 不使用共享对象,所以我将其移至 rpc 调用并使其成为服务器端对象以克服它,但是当我再次测试它时,刷新新对象被创建,数据丢失。

我还测试了静态哈希图来保存应用程序范围的数据,但它的行为几乎相同,一旦刷新浏览器,它的重置和旧数据就会丢失。它与我们遵循这种方法的普通 Java Web 应用程序的行为几乎没有什么不同。

这种技术曾经适用于普通的 spripng web 应用程序,但不适用于 gwt

【问题讨论】:

    标签: gwt hashmap hitcounter


    【解决方案1】:

    您是对的,您需要将此值存储在服务器端并通过异步调用访问它。由于您过去在 Spring 上取得了成功,您可能会考虑在 GWT 异步服务的实现端再次使用它。您可以轻松地将 Spring Singleton bean 注入 GWT Async 实现类并像过去一样使用它。

    【讨论】:

    • 你是对的,你需要将这个值存储在服务器端并通过异步调用访问它,我已经做了这部分,但是没有运气,刷新页面,新对象被创建并且数据在对象中丢失。您能否向我确认,如果没有 spring,ASync Call 也将不起作用。我已经为这个场景做了很多调试,但它对我没有用。期待您的回复
    【解决方案2】:

    计数器的预期寿命是多少?它们是否由其他用户共享? 您可以将它们存储在数据库或会话中,并通过 GWT 异步调用访问它们。

    【讨论】:

      【解决方案3】:

      您可以使用 GWT HTML5 LocalStorage 来获取客户端持久数据,当然也可以使用服务器端。这实际上取决于您要达到的目标。

      【讨论】:

        猜你喜欢
        • 2021-09-14
        • 2015-08-01
        • 2017-03-17
        • 1970-01-01
        • 2014-09-22
        • 2021-04-24
        • 2011-05-22
        • 1970-01-01
        • 2020-10-09
        相关资源
        最近更新 更多