程序

时间:2015-09-28 05:29:18

标签: java servlets

我想计算我的servlet程序在应用程序中运行的次数。

我在servlet的doPost方法中使用了count变量。每次运行应用程序时,计数都会增加。但是如果关闭编辑器(eclipse / netbeans)或者如果我关闭项目,那么我的计数将重置为零。因为我的servlet容器也将停止运行。

一种方法是将我的计数值保存在数据库中。除了关闭编辑器或项目之后我还可以存储计数值的数据库还有其他方法。我可以将我的计数值存储在文件中吗?

1 个答案:

答案 0 :(得分:2)

通常,您可以随时存储计数值,文件,任何类型的数据库等等。

但是我想提一下,servlet通常设计为在许多用户可以同时访问servlet的环境中运行,所以你总是要考虑同步。 可以存在serlvet类的多个实例(它们可以在创建它们时由Web容器决定)。

一般来说,您需要做的是:

  • 获取当前值
  • 将值增加1
  • 存储值

现在必须仔细实施这件事。 根据您可能要使用交易考虑的基础层:For example for postgesql

另一个例子是使用像Redis这样的NoSQL商店: Read Pattern counter section

实现分布式计数器的最佳方法实际上取决于底层存储,因此很难就更具体的内容提出建议,选择权归你所有。

我想提到的另一个方面是Web应用程序的分布式特性。

如果它是一个真实世界的应用程序,最终您可能希望在多个服务上运行它并且将其扩展到“#”; (至少在我看来,它是现代服务器端软件的一种趋势)。

从这个角度来看,应用程序无法真正使用本地文件,例如Windows注册表,因为文件系统不是分发文件(除非您使用分布式文件系统)。

希望,这有帮助