Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat:将会话Id转发给另一个Tomcat(没有会话数据)_Java_Session_Tomcat - Fatal编程技术网

Java Tomcat:将会话Id转发给另一个Tomcat(没有会话数据)

Java Tomcat:将会话Id转发给另一个Tomcat(没有会话数据),java,session,tomcat,Java,Session,Tomcat,是否可以将会话id从Tomcat A“转发”到Tomcat B,如下所示 Browser --> Tomcat A --> Tomcat B 其中-->表示HTTP请求 其思想是,虽然A和B是具有独立会话数据的独立服务器,但我希望在不同的Tomcat web应用程序中为每个浏览器归档一个全局会话id(类似于A作为“代理”) 其思想如下:当浏览器在没有会话的情况下执行请求时,它应该生成一个新的请求,例如使用id=abc。现在,当使用相同的会话cookieid=abc发送请求时,Tom

是否可以将会话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的
SessionIdgeGenerator
,但是B中的会话id取决于请求,并且生成器看起来像一个单例。 我觉得这需要TomcatB中的自定义会话管理器,因为会话id无法修改

另一种方法是维护两个单独的会话,一个用于浏览器,另一个用于从A到B的连接(其中A将B返回的会话id存储在浏览器会话属性中)。然而,这将需要额外的国家,因此不是我喜欢的解决方案


如果您能为最新的Tomcat 7提供一个可行的解决方案,那就太好了。

使用相同的会话ID,您想要实现什么?我有两个企业系统,一个CMS和一个Webshop,都运行在不同的Tomcat服务器上。我目前正在评估如何进行会话管理,当两台服务器都必须有自己的会话,并且一台服务器可以与另一台服务器对话(例如A到B,而不是相反)时,您似乎不需要相同的会话id,因为一台服务器将是另一台服务器的客户端。似乎客户端只需在其自己的客户端会话中管理一个cookie。但是如果终端客户机将直接连接到任一服务器,那么这两台服务器可能需要会话复制;或者至少是一个适用于两者的域的cookie(如果应用服务器设置和/或读取相同的cookie,那么使用反向代理很容易)。我会发现干扰会话id的生成是不可靠的,但还有很多我不知道…场景如下:我想使用HTTP请求将一些动态(特定于用户的)内容块从商店(B)添加到CMS(a)和商店会话。想想客户姓名、送货地址等。这意味着要么我必须记住CMS中商店系统的会话id,要么我需要所有应用程序的会话标识符。复制不起作用,因为应用程序不同。