Java Tomcat不缓存未经身份验证用户的会话

Java Tomcat不缓存未经身份验证用户的会话,java,session,tomcat,caching,Java,Session,Tomcat,Caching,我正在对DataSourcealm使用基于表单的身份验证。当用户登录时,会话将被正确缓存,只要我保持登录状态,我就保持相同的sessionID 然而,当用户未登录时,Tomcat会根据每个请求更改我的会话。我需要会话保持活动状态,即使用户未登录 有没有办法让Tomcat缓存未经身份验证的用户会话 编辑: 我刚才注意到的一个值得注意的细节是,它只发生在子域上。i、 e.当我转到时,无论我是否经过身份验证,我在每个请求上都正确地获得相同的会话ID。但是,如果转到,未经身份验证的用户会为每个请求获得不

我正在对DataSourcealm使用基于表单的身份验证。当用户登录时,会话将被正确缓存,只要我保持登录状态,我就保持相同的sessionID

然而,当用户未登录时,Tomcat会根据每个请求更改我的会话。我需要会话保持活动状态,即使用户未登录

有没有办法让Tomcat缓存未经身份验证的用户会话

编辑:

我刚才注意到的一个值得注意的细节是,它只发生在子域上。i、 e.当我转到时,无论我是否经过身份验证,我在每个请求上都正确地获得相同的会话ID。但是,如果转到,未经身份验证的用户会为每个请求获得不同的会话ID

在my context.xml中,我有:

<Context sessionCookiePath="/" sessionCookieDomain=".example.com">
  ...
  <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
  <Valve className="org.apache.catalina.authenticator.FormAuthenticator"/>
</Context>

没有成功。

Tomcat版本?我使用的是Tomcat 8。不要使用
JDBCRealm
。改用
datasourcealm
。会话的维护独立于用户的身份验证状态。当用户进行身份验证时,他们的会话id将更改,但支持会话对象将保持不变。你能提供一些关于你的环境的更多信息吗?Tomcat实例的数量,是否尝试使用集群等?我只有一个Tomcat实例。我使用会话ID来维护用户会话数据(购物车)。但是如果每个请求的ID都改变了,我就失去了我的引用。这仅在用户未进行身份验证时发生。如果我进行身份验证,我会为每个请求保留相同的会话ID。
changeSessionIdOnAuthentication="false"