锁定老帖子 主题:robbin的HttpSession总结
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-23
375 写道 session的保存的确有这样的方式,不过觉得用处不大,而且本人也不太喜欢IBM的东西。 当session对你的系统来说“非常非常重要“的时候,自己管理session虽然复杂,但最有效 当然,前提是要有能力把它管好 |
|
返回顶楼 | |
发表时间:2004-03-10
楼主能不能给出resin重启动appserver部分的代码,
偶想借鉴一下。 多谢了。 |
|
返回顶楼 | |
发表时间:2004-05-21
补充一下,WebSphere 5.x里边,如果session中的对象没有实现序列化,在cluster环境中,如果某session所在的机器当掉,在其他的cluster成员上是无法完全恢复此session的。
|
|
返回顶楼 | |
发表时间:2004-05-21
关于“session对象实现序列化接口”,bruce找到问题所在,不过结论刚好相反,就是放置到httpsession的对象的确需要实现序列化接口。
在weblogic server的情况可以看http://edocs.bea.com/wls/docs81/webapp/sessions.html#session-persistence,在需要session persistence时,里面明确提到“When your applications stores data in an HTTP session object, the data must be serializable. ”。 session persistence的目的不是为了保存到硬盘(我想这种需求很少),更多是为了在服务器之间同步httpsession已达到failover的特性。 另外在Weblogic Server中还有一个功能,就是重新部署WebApp仍能够保持Httpsession,这种情况下也是要求放入httpsession的对象必须实现序列化接口。 |
|
返回顶楼 | |
发表时间:2004-05-25
serialization对于分布式的用处就是可以使object能够在JVM之间移动.
而且Java的Serialization有不少限制,不如Collection,和Reference等等. |
|
返回顶楼 | |
发表时间:2004-06-03
对Session清晰了很多。
还有一个问题:Server是怎么知道Client的Session的,也就是说,sessionId是不是也返回到客户端?还是通过什么方式? 这样我联想起来ThreadLocal,Server怎么知道这个Client的Thread的? |
|
返回顶楼 | |
发表时间:2004-06-04
darrenlee 写道 对Session清晰了很多。
还有一个问题:Server是怎么知道Client的Session的,也就是说,sessionId是不是也返回到客户端?还是通过什么方式? 这样我联想起来ThreadLocal,Server怎么知道这个Client的Thread的? 这只不过是HTTP header 的东西。 最常见的就是存放于Cookie 其次就是URL querystring (Tomcat会这么处理,其他的不清楚) 下面举个登录的例子: 1)client -> post data (without sessionid) -> server 2)server 验证通过,启用session,生成sessionid 3)server -> response (with sessionid) -> client 4)client ( keep the sessionid ) 接下来的client都将持有这个sessionid,直到如下情况发生: 1)服务器再次发送一个新的sessionid/或者清空 2)client关闭 |
|
返回顶楼 | |
发表时间:2004-06-05
在weblogic 8.1下,把一个没有实现序列化接口的对象放入session,会有一个warning,所以weblogic应该是会在某个时候钝化session的。
而且很多app server都可以配置成在shutdown后自己重启的,包括weblogic 而且很多app server都不使用cookie机制来实现session,而是使用url重写,特别是安全要求比较高,而且session携带的数据量不大的时候。可以避免恶意猜测sessionID |
|
返回顶楼 | |