Java 当浏览器调用其他服务器时,Tomcat会话共享不工作

Java 当浏览器调用其他服务器时,Tomcat会话共享不工作,java,session,tomcat,Java,Session,Tomcat,我有两个tomcats服务器1和服务器2,分别运行war1和war2。我将其添加到两台服务器上的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是入口点。这些是步骤 用户通过

我有两个tomcats服务器1和服务器2,分别运行war1和war2。我将其添加到两台服务器上的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使用相同的会话

在我启动了两台服务器之后,当Server1War1的UI调用server2时,我期望从浏览器获取现有会话。但是,当调试时调用到达server2时,没有会话,server2正在创建新会话。 同时,如果我直接在浏览器地址栏中点击server2 url,server2将从由server1创建的浏览器中拾取会话,这是正确的

我的问题是,为什么当Server1UI调用server2时,它不会发生??!!
任何帮助都将不胜感激。提前感谢

我弄明白了为什么会话对其他服务器不可见。当从UI调用时,该调用与我的ajax相同。Ajax不会将会话cookie作为请求的一部分发送,这会使其他服务器生成新会话

虽然WAR部署在不同的服务器上,但所有url都应该指向同一个域。例如,域为http://localhost:9000 并且应该使用应用程序名称来区分http://localhost:9000/app1, http://localhost:9000/app2. 为了实现这一点,我配置了Apache2.4服务器。然后它开始工作,没有任何问题


也许还有别的办法。我只是想分享我找到的答案。

端口不同,因此即使使用path/的cookie也适用于不同的主机/端口组合。@Joshua Moore那么,当我直接在浏览器中点击url时,它为什么能够选择会话?抱歉,我误解了顺序。cookie/请求来自浏览器并绑定到浏览器。因此,除非浏览器向两台服务器发出请求,否则它将是一个不同的会话。App1到App2是与浏览器到App1不同的会话。我假设您在App1和App2之间使用HTTP请求,因为您没有指明是否使用。谢谢@Joshuamore我用实际步骤更新了我的问题。浏览器调用App1,进入某个jsp页面后,用户单击一个按钮调用App2。所以它应该是同一个会话,对吗?