2011-05-04 69 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