我有两个版本的相同grails应用程序在两个Tomcat实例上运行(并使用两个不同的Javas)但在同一台机器上(在Windows下)。
让我们说:
这是奇怪的行为:
如果我使用机器M的别名主机名(例如localhost:7224和192.168.1.1:8080),则不会发生这种情况。
有谁知道会发生什么?
编辑:found one possible duplicate,但它使用的是tomcat 7(我正在使用Tomcat 8)。那里的答案不适用于我,因为我的catalina具有正确的端口配置。
答案 0 :(得分:1)
默认情况下,Grails使用cookie来存储会话ID。并且cookie是特定于域的。这就是别名主机名修复问题的原因。试试这个:
如何修复
要解决此问题,您必须让两个应用停止竞争 JSESSIONID 名称。
对于Tomcat8,在{tomcat}/conf/context.xml
中,<Context>
节点可能为空。这使会话cookie名称默认为 JSESSIONID 。解决方案是明确设置sessionCookieName
。
它应如下所示:
<?xml version='1.0' encoding='utf-8'?>
<Context sessionCookieName="SESSION8080">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
您要对其他应用<Context sessionCookieName="SESSION7224">