整合ssh架構的java項目運行在tomcat6上,用apache來代理,發佈了一個網站應用。發佈成功後,因別的網站裏iframe調用,很明顯發現ie瀏覽器禁用了cookie。
爲了實現session能統一,apache中增加了stickysession。可以使用每次請求都會產生新的sessionid。
網上找到很好的案例,可就是每次都一樣。
http://acooly.iteye.com/blog/1302903
最後發現自己的應用在tomcat中設置爲
<Context docBase="D:\workspace\xx\WebRoot" path="/xx" reloadable="false">
</Context>
apache 配置
ProxyRequests Off
ProxyPreserveHost on
ProxyPass / balancer://tomcatcluster/ stickysession=JSESSIONID|jsessionid nofailover=Off
#ProxyPassReverse / ajp://localhost:8009/
<Proxy balancer://tomcatcluster/>
BalancerMember ajp://localhost:8009/xx/site loadfactor=1 route=t
#BalancerMember ajp://localhost:8999/hrbole/xx/site loadfactor=1 route=tomcat2
#ProxySet lbmethod=bybusyness
</Proxy>
最後發現,問題就出現在path上,path="/xx" 直接把cookie 的path路徑改成xx,而apache 用 /根路徑代理之後,tomcat 的xx目錄下的引用不再認可jsessionid
Set-Cookie JSESSIONID=B7EACFABF5543D0E5C19155CCDC82D02.a; Path=/xx
所以,要把tomcat的path路徑改成根目錄,適應apache的session目錄地址
<Context docBase="D:\workspace\xx\WebRoot" path="/" reloadable="false">
</Context>