当前位置: 首页 > 知识库问答 >
问题:

Spring会话惰性反序列化

仲孙翔飞
2023-03-14

下面是一个重现我的问题的示例项目:https://github.com/deathcoder/hazelcast-shared-session

共有1个答案

羊光辉
2023-03-14

我相信我已经知道了发生的事情:Spring-Session-Hazelcast默认情况下在本地存储会话更新,直到请求完成&当请求完成时,在返回响应之前,使用entryprocessor将所有内容发送到集群EntryProcessor要求存储会话记录的成员上有可用的对象类,而且由于数据是分布式的,所以其他成员可能存储在另一个实例中创建的会话。根据您所说的,不是所有的节点都是相同的,不包含所有的类&这会导致序列化异常。

您可以使用User Code Deployment特性将缺少的类部署到其他成员:https://docs.hazelcast.org/docs/3.11/manual/html-single/index.html#member-user-code-deployment-beta

如果要更改存储在会话中的对象,可以将class-cache-mode设置为off,以防止每次操作都不缓存它们而发送它们。

 类似资料:
  • 我正在用Spring Boot测试一个微服务架构,但是当Spring Session试图从redis反序列化会话时出现了一个异常。 体系结构如下: 雷迪斯 雷迪斯 网关 网关应用程序.yml 管理 我得到了以下堆栈跟踪。我注意到网关应用程序可以正确反序列化,但它在异常点使用DefaultListableBeanFactory。但Admin应用程序使用此StaticListableBeanFacto

  • 我正在尝试让Tomcat在关机时坚持我的会话。我已经解决了这样一个要求,即我在会话中存储的所有内容都是可序列化的,当我在Eclipse下运行Tomcat时,这很好:当代码更改迫使Eclipse重新加载webapp时,会话现在仍然存在。 然而,当我试图在一个独立的Tomcat中做同样的事情时,我遇到了一个问题。 我取消了${catalina.base}/conf/context.xml中的Manag

  • CDI新手问题。简单测试场景:JSF CDI会话范围bean。 我需要一种优雅的方式来实例化一组已知的会话范围的cdibean,而不必在页面上提及它们,也不必从其他bean调用它们的方法。作为一个测试用例——一个简单的日志bean,它只记录http会话的开始和结束时间。 当然,我可以创建一个空的JSF组件,将其放在站点范围的模板中,并使其触发所需会话bean的虚拟方法,但从我的观点来看,这有点难看

  • 我有一个springbean和scope会话。这个bean持有对另一个不可序列化的单例bean的引用。如果我想序列化会话范围的bean,最好的方法是什么? 这里已经提出了同样的问题:Spring会话范围的bean(控制器)和对服务的引用,在序列化方面 公认的答案是: 这个问题在Spring 3.0中通过提供一个非序列化bean的代理来解决,该代理从当前应用程序上下文中获取实例 据我所知,链接视频中

  • 问题内容: 我有一个实体: 然后我有一个控制器,其目的是检索书籍,我的问题是,流派字段包含在控制器的json响应中。有什么办法可以排除杰克逊序列化对象时延迟加载的那些字段? 这是我的ObjectMapper的配置: 谢谢! 我无法将其标记为JsonIgnore,因为它将永远在序列化框中。有时候,我将需要随书一起检索体裁,到那时,我将在查询中使用“获取联接”,因此它不会为null。 问题答案: 你可