我有2个tomcats (server1 and server2)
用独立的战争(war1 and war2)
运行每一个。我将此<Context sessionCookiePath="/">
添加到两台服务器的context.xml
中。
server1 : http://localhost:9090/myapp1 - spring application
server2 : http://localhost:8080/myapp2 - grails application (version 2.3.4)
Tomcat version 7.0.47
在我的情况下,server1是入口点。这些是步骤。
用户通过浏览器访问server1的URL。
使用他的凭证登录
现在,服务器在成功认证后创建了一个新会话。
单击链接到server2的按钮
我希望server2使用相同的会话。
启动两个服务器之后,我期望当(server1)war1的UI调用server2时将从浏览器获取现有会话。但是,当调用(调试时)到达server2时,没有会话,而server2创建了新会话。
同时,如果我直接在浏览器地址栏中点击了server2网址,server2就是从server1创建的浏览器中获取会话,这是正确的。
我的问题是,当(server1)UI调用server2时为什么没有发生?
任何帮助将不胜感激。提前致谢
最佳答案
我弄清楚了为什么该会话对其他服务器不可见。从UI调用时,该调用是我的ajax(相同的来源)。 Ajax不会发送会话cookie作为请求的一部分,这使得另一台服务器可以生成新的会话。
尽管战争部署在不同的服务器上,但所有URL应指向同一域。例如,域为http://localhost:9000
,则应使用应用名称http://localhost:9000/app1, http://localhost:9000/app2
进行区分。为此,我配置了Apache(2.4版)服务器。然后它开始工作,没有任何问题
也可能有其他方式。只想分享我找到的答案。