0

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

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

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

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

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

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

4

3 回答 3

0

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

于 2011-11-02T07:25:51.953 回答
0

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

于 2011-11-02T13:32:53.947 回答
0

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

于 2011-11-02T13:34:27.620 回答