2011-05-04 37 views
6

爲了說明一些情況,我正在開發一個API來跟蹤用戶在網站上的操作(匿名用戶)。到目前爲止,我們使用jsessionId來標識每個用戶和他的行爲。jSessionId真的很獨特嗎?

該API現在運行在Tomcat和JBoss上。

真的很重要的問題是,既然我們每天都要分析所有數據,那麼這個jsessionId的唯一性在任何時候都能保證嗎?或者,並非同時,其他用戶可以獲得與其他用戶以前使用的jsessionId相同的jsessionId嗎?

在此先感謝。

+1

這只是一個猜測,但由於jSessionId基本上就像是一個UUID,理論上它可能會發生碰撞,但應該極其不可能。請參閱http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates – helpermethod 2011-05-04 22:53:03

回答

7

對不起,沒有指定。只需要在那個時間點對那個jvm是唯一的。也就是說,只要沒有其他人召開會議,會議ID可以每天重複使用多次。我同意大多數實際的實施可能會提供更強的保證,但我認爲你不能指望它。

看一看this mailing list - 其中人們討論tomcat和resin中的session id重用。

所以,基本上假設會話ID是唯一的,只有當會話被破壞時纔是真實的。

+0

感謝您的回答。我們想知道這種可能性。那麼,有什麼方法可以跟蹤訪客用戶? – 2011-05-05 07:04:56

+0

這裏討論的具體情況意味着**相同的用戶**會爲新會話分配相同的會話ID。據我瞭解這個問題,這不會是一個問題。同一會話ID被其他用戶重複使用並不是不可能的,但是不太可能(除非有一些惡意操作正在進行)。 – 2011-05-05 07:05:48

+1

只是爲了確保我很清楚inOde - 是的,你可以跟蹤用戶。但是你必須小心並且意識到只要會話被釋放(SessionListener是你的朋友),其他人可能會使用該ID – MJB 2011-05-05 09:06:26