今天在做视频聊天室时,发现一个问题,当Web应用程序建立视频聊天对话后,Web应用程序的Session就丢失了,查了一些资料,终于找到了产生该问题的原因:
?
是因为Red5是在Jetty的基础上修改的,而Jetty的sessionid会覆盖掉Tomcat的sessionid,当建立视频对话后,web应用程序的sessionid就发生了变化,而且长度也不一样,这样重新刷新页面时,就会丢失Session。
?
我的初步解决办法是,将Session保存在Cookie里,Cookie的信息用Base64加密,如下:
?
Cookie cookie = new Cookie("username",username);
Cookie cookie2 = new Cookie("password",Base64.encode(password));
cookie.setMaxAge(365 * 24 * 60 * 60);
response.addCookie(cookie);
response.addCookie(cookie2);
?
如果你单独使用的是jetty服务器,还可以通过修改默认的jsessionid名称来解决,在属性文件里,这个问题差不多困扰了半天时间才在google里找到答案,郁闷之极!?
1 楼
mercyblitz
2010-06-22
如果Cookie中的JSESSIONID的值被覆盖掉的话,使用URL rewrite,添加到URL就可以啦