我们目前正在应用程序中集成Apache,以共享集群中的会话。
此时,我们可以成功地在两个本地tomcat实例之间共享会话,但是有一个用例,到目前为止还不能工作。
当使用完全相同的代码运行两个本地实例时,这一切都很好。但是,当Ignite逻辑集成到生产集群中时,我们将遇到以下用例:
当在同一个网格中用两个tomcat实例在本地复制此用例时,Ignite web会话集群失败。我测试的是移除驻留在用户会话中的类(配置文件)的一个“String属性”。当使用这个已更改的类启动Node 1时,我得到以下异常:
Caused by: java.lang.ClassNotFoundException:
Optimized stream class checksum mismatch
(is same version of marshalled class present on all nodes?) [expected=4981, actual=-27920, cls=class nl.package.profile.Profile]这将是我们部署的通用/常规用例。我的问题是:如何处理这个用例?Ignite有解决/解决这类问题的方法吗?
发布于 2016-02-09 14:11:19
在我的理解中,您的用例非常适合Ignite二进制对象1。这个特性允许以无类格式存储对象,并允许在运行时修改对象结构,而无需在对象的版本更改时重新启动完整的集群。
Person类应该实现org.apache.ignite.binary.Binarylizable接口,这将使您完全控制序列化和反序列化逻辑。有了这个接口,集群中甚至可以有两个节点在反序列化和序列化时使用不同版本的Person类,只从/写入所需的字段到二进制格式。
https://stackoverflow.com/questions/35287933
复制相似问题