stickysession不能在Apache和两个Glassfish实例中正常工作

我有两个应用程序在两个Glassfish实例中运行,我configuration我的Apache使用sticky session如下所示:

 ProxyPass / balancer://Appcluster/ stickysession=JSESSIONID 

但是这并不是100%正确的,当客户端从App1转到App2时,它会改变一些实例。

我检查我的导航器中的cookies显示我这样的事情:

浏览器的cookies

我在web.xml发现了另一个configuration,如下所示:

 <session-config> <session-timeout> 30 </session-timeout> <cookie-config> <path>/</path> </cookie-config> </session-config> 

所以当我这样做这样的path,每件事情都很好,但它创造了一个新的上下文之间的每个导航这两个应用程序之间。

现在我configuration我的GlassFish并设置App1像一个默认的Web模块 ,这工作正常,上下文是一样的,服务器创build一个新的cookie像这样:

浏览器的cookies

但是,当我尝试连接没有默认的Web模块 ,它使用两个实例。

你能否提出Apache和Glassfish的正确configuration以在集群环境中运行多个应用程序?

编辑

我通知了一些事情,所以当客户端从App1到App2和VS,每次创build一个新的cookie如下:

 +-------+----------------------------------------+ | APP | Cookie | +-------+----------------------------------------+-----+ | app1 | b5a1cd4befdc306f6e569d835b5e.instance2 | New | +-------+----------------------------------------+-----+ | app2 | b6caf890638a506216d625f7c82b.instance2 | New | +-------+----------------------------------------+-----+ | app1 | b6d1870ad8f3d044cc768b31e810.instance2 | New | +-------+----------------------------------------+-----+ | app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 | New | +-------+----------------------------------------+-----+ | app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 |Same | because i don't change the application +-------+----------------------------------------+-----+ 
  • 为什么每次都创build一个新的cookie?
  • 如何修复,并使其每个应用程序独一无二?

经过一个星期的search,终于find了解决办法:

我使用两个东西,一个在两个应用程序中,一个在服务器Apache中:

因此,在应用程序中,我们应该在web.xml中定义cookie的名称:

APP1

 <session-config> <session-timeout> 30 </session-timeout> <cookie-config> <name>jsessionapp1</name> <path>/</path> </cookie-config> </session-config> 

APP2

 <session-config> <session-timeout> 30 </session-timeout> <cookie-config> <name>jsessionapp2</name> <path>/</path> </cookie-config> </session-config> 

而在服务器Apache中,我们在/etc/httpd/conf/httpd_proxy.conf中修复了stickysession的名字:

 ProxyPass / balancer://Appcluster/ stickysession=jsessionapp1|jsessionapp2|jsessionappN 

我不知道是否有其他的解决scheme比这更好,如果是的话,我会很高兴认识他们。