有可能as shown here使用配置Tomcat(或者我猜任何其他符合Servlet 3.5的容器)对使用多个Java应用程序的浏览器会话使用相同的JSESSIONID
值(例如,在不同的tab)在同一个容器上。
但正如here解释的那样,会话对象会有所不同 - 只有JSESSIONID
值才会相同:
SRV.7.3会话范围
HttpSession对象必须在应用程序(或servlet)上作用域 上下文)级别。底层机制,例如用于的cookie 建立会话,对于不同的上下文可以是相同的,但是 引用的对象,包括该对象中的属性,绝不能 由容器在上下文之间共享。
鉴于HttpSession个对象(以及会话范围内存区域)在不同应用程序之间的服务器端会有所不同,这种机制可以用来在不同应用程序之间传递信息的唯一方法是:
(a)将一些信息存储在JSESSIONID
值本身
或
(b)使用公共JSESSIONID值在后端数据库上执行查找或以服务器到服务器的方式访问某些REST API并访问驻留在那里的共享信息共同的JSESSIONID。
选项(a)是不可能的,因为容器会创建JSESSIONID
值,因此无法在其上雕刻其他信息。
我的上述观点是否正确以及您希望在同一个servlet容器中部署一组应用程序来共享会话标识符的一些用例是什么?
例如,我猜选项(b)可以在共享相同JSESSIONID的应用程序之间允许一些简化的单点登录实现(并且它们都在同一个Servlet容器中进行了扩展)。
答案 0 :(得分:0)
您可以将JSESSION ID用作许多应用程序使用的数据库的键。例如。用于审计目的。