2013-05-06 69 views
1

我有一个Web应用程序,其UI具有通过Struts Action类的请求处理。什么是运行时在服务器中保存数据的首选方法

可以说,UI在单个请求中发送30个变量的数据。动作类处理请求并将30个变量存储在java对象中。

我需要坚持数据超出请求范围(即使服务器发送响应回到客户端收到的请求,数据必须持久),因为我有另一个servlet依赖于这个持久数据(那些通过UI更新了30个变量)。

途径持久性:

  1. 储存于DB
  2. 使用JPA
  3. 使用静态变量。
  4. 使用MQ

以上哪个更适合您?我想第三个选项并不好。

相加点数有更好的清晰度:

  • 的UI发送针对每1分钟 的请求(保持约30 String变量数据)。对于每一分钟,持续的数据必须被修改为 。

  • 的另一个servlet其依赖于这个持续的数据是没有办法
    相关的请求,因此,我相信会话上下文不会 共享。

+1

不要使用静态变量 – 2013-05-06 21:13:31

+0

这将取决于您的要求知道在哪里存储数据。你甚至可以传递请求属性中的所有数据,不需要数据库交互,也不需要使用HTTP会话(ab)。 – 2013-05-06 21:21:24

+0

@LuiggiMendoza出于好奇,HTTP会话有什么缺点? – austin 2013-05-06 21:24:27

回答

2

您能用HttpSession吗?您可以将数据放入会话中,该会话将数据存储在服务器端,然后将其保存在请求中并可供其他servlet使用。

+0

您是否正在回答与另一个问题有关的问题? – 2013-05-06 21:11:58

+0

你是在评论一些东西还是问另外一个问题吗?,抱歉无法抗拒,但顺便说一下,我一直认为,滥用它存储数据是一个坏主意 – jsedano 2013-05-06 21:12:47

+0

不是4个选项之一,所以我想也许它已经被考虑过了。 – austin 2013-05-06 21:13:42

1

没有足够的信息。它确实取决于许多不同的因素(应用程序的功能,数据量等),这些因素尚未详细阐述。所有这些方法在某种情况下都可能是正确的。即使是静态变量选项在某些奇怪的情况下也是正确的。

+0

+1当然!,就像当你需要在不同的客户端之间共享相同的数据一样,那么你可以想到静态变量,然后我再次感觉到数据库是更安全的一个。 – jsedano 2013-05-06 21:18:10

+0

静态变量**永远不会是多线程环境中的最佳解决方案。 – 2013-05-06 21:19:15

+0

一个很好的同步单身...我知道是一个反模式...但有时它的工作 – jsedano 2013-05-06 21:25:58

相关问题