同一机器上不同应用服务器之间的Session问题

  • 来源:
  • 更新日期:2018-05-07

摘要:现象:用户访问服务器A的页面,A做一个一些处理后,将页面定向到服务器B的页面,服务器B再做一些处理后,将页面定向会服务器A的页面。如果A和B都是JBOSS, HttpSession能够保持。如果A是JBOSS,B是WAS,但是不运行在同一主机,那么不会有问题。如果A是JBOSS,B是WAS,而且A和B在同一台主机,那么HttpSession就无法保持,回到A后,A会生成一个新的会话,应该是HTTP

现象:用户访问服务器A的页面,A做一个一些处理后,将页面定向到服务器B的页面,服务器B再做一些处理后,将页面定向会服务器A的页面。如果A和B都是JBOSS, HttpSession能够保持。如果A是JBOSS,B是WAS,但是不运行在同一主机,那么不会有问题。如果A是JBOSS,B是WAS,而且A和B在同一台主机,那么HttpSession就无法保持,回到A后,A会生成一个新的会话,应该是HTTP报文中的session标志丢失了。 郁闷

5895d477-f76e-4df0-9ab4-6cfe1bce80ce.jpg

原因:会话跟踪与一个jsessionid的cookie有密切的关系。


解决办法:如果A是JBOSS,B是WAS,而且A和B在同一台主机XXXhost,请先用XXXHost为主机名URL访问服务器A的页面,A做一个一些处理后,将页面定向到服务器B的页面(用主机名localhost作为URL),服务器B再做一些处理后,将页面定向会服务器A的页面(用XXXHost为主机名URL)。得到的结果是:Session可以正常保持。因此得到一个结论:Session和JSESSIONID以及主机名都有关系,如果都在一台机器上,就要用不同的虚拟主机来区分开。