处理JSP Session的问题

时间:2009-08-19 23:36:01

标签: java servlets

我处理会话很不方便..

我有这个:

www.mydomain.com
sub1.mydomain.com
sub2.mydomain.com
sub3.mydomain.com

当我登录“www”时,我改为“sub2”(例如)I 弄清楚它会创建另一个会话:S 为什么会这样?

我需要为www,sub1,sub2,sub3等进行相同的会话.. ALL in “mydomain.com” ..

我该怎么办?是这样的,我必须做一个把戏?或是 我想要的是“合法”的解决方案吗?

3 个答案:

答案 0 :(得分:4)

JSESSIONID cookie由容器发布,cookie域和路径始终是Web应用程序的域和上下文根的。

看起来好像你有多个应用程序,在这种情况下,由于域或上下文根中的更改,一个应用程序发出的JSESSIONID将无法被另一个应用程序识别,即使这些应用程序位于同一个容器中

有多种方法可以解决这个问题:

  • 如果您没有处理高价值的应用程序,并且您可以保证服务器上不会部署“恶意”应用程序,则可以将服务器配置为跨应用程序共享会话。 Weblogic Server可以配置为执行此操作。
  • 使用中央身份验证和会话管理提供程序 - SSO。
  • 使用TLS / SSL - 大多数服务器在通过SSL进行通信时不发出JSESSIONID cookie,而是使用SSL本身来存储状态。你会在这里得到不同的结果。

<强>更新

Glassfish v3允许您为会话cookie设置域。这是通过session-config element in sun-web.xml完成的。我不确定这是否适用于v2或更低版本的Glassfish。

答案 1 :(得分:1)

是的,就像那样,因为你将为每个不同的域提供单独的会话cookie。你使用哪个Web服务器?您可以实施与SSO相关的解决方案,以跨域共享数据。

答案 2 :(得分:0)

查看本教程:http://javadude.wordpress.com/2011/05/12/glassfish-3-1-%e2%80%93-clustering-tutorial-part2-sessions/ 我总结了Glassfish 3.1和会话复制的所有步骤