2013-05-06 62 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

相關問題