是否可以将会话ID仅从Tomcat A“转发”到Tomcat B,如下所示?
Browser --> Tomcat A --> Tomcat B
其中-->
表示HTTP请求?
这个想法是,尽管A和B是具有独立会话数据的独立服务器,但我想在不同的Tomcat Web应用程序中为每个浏览器存档一个全局会话ID(类似于A作为“代理”)。
想法如下:当浏览器在没有会话的情况下执行请求时,它应生成一个新的请求,例如与id=abc
。现在,当使用相同的会话cookie id=abc
发送请求时,Tomcat B会创建一个具有相同ID(但数据不同于A的会话)的新会话。
我查看了Tomcat的SessionIdGenerator
,但是B中的会话ID取决于请求,并且生成器看起来像单例。
我感觉这需要在Tomcat B中使用自定义会话管理器,因为会话ID无法修改。
另一种方法是维护两个单独的会话,一个用于浏览器,一个用于从A到B的连接(其中A在浏览器的会话属性中存储B返回的会话ID)。但是,这将需要附加状态,因此不是我偏爱的解决方案。
如果可以为最新的Tomcat 7建议一个可行的解决方案,则表示敬意。