hazelcast - Hazelcast Spring Session SubZero(Kryo) EntryBackupProcessorImpl NullPointerException 问题
问题描述
我正在使用hazelcast-3.11.2
和SubZero-0.9
作为全局序列化程序。我正在尝试使用此示例配置 Spring Session 。当集群中有多个节点时 - 尝试获取会话 ID 时出现下一个异常:
2019-03-20 15:01:59.088 错误 13635 --- [ration.thread-3] chmioperation.EntryBackupOperation : [xxxx]:5701 [hazelcast-group] [3.11.2] null
java.lang.NullPointerException:在 com.hazelcast.map.impl.operation.EntryOperator.process(EntryOperator.java:314) 在 com.hazelcast.map.AbstractEntryProcessor$EntryBackupProcessorImpl.processBackup(AbstractEntryProcessor.java:83) 处为空。 hazelcast.map.impl.operation.EntryOperator.operateOnKeyValueInternal(EntryOperator.java:181) 在 com.hazelcast.map.impl.operation.EntryOperator.operateOnKey(EntryOperator.java:166) 在 com.hazelcast.map.impl.operation。 EntryBackupOperation.run(EntryBackupOperation.java:60) 在 com.hazelcast.spi.impl.operationservice.impl.operations.Backup.run(Backup.java:158) 在 com.hazelcast.spi.Operation.call(Operation.java: 170) 在 com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.call(OperationRunnerImpl.java:208) 在 com.hazelcast.spi.impl.operationservice.impl。OperationRunnerImpl.run(OperationRunnerImpl.java:197) at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:413) at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process( OperationThread.java:153) 在 com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:123) 在 com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java: 110)hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:110)hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:110)
我的实例配置如下所示:
@Configuration
@EnableHazelcastHttpSession
public class HazelcastSessionConfig extends AbstractHttpSessionApplicationInitializer {
@Bean
public HazelcastInstance hazelcastInstance() {
Config config = new Config();
SubZero.useAsGlobalSerializer(config);
MapAttributeConfig attributeConfig = new MapAttributeConfig()
.setName(HazelcastSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)
.setExtractor(PrincipalNameExtractor.class.getName());
config.getMapConfig(HazelcastSessionRepository.DEFAULT_SESSION_MAP_NAME)
.addMapAttributeConfig(attributeConfig)
.addMapIndexConfig(new MapIndexConfig(
HazelcastSessionRepository.PRINCIPAL_NAME_ATTRIBUTE, false));
return Hazelcast.newHazelcastInstance(config);
}
}
从配置中删除 SubZero 会删除异常,因此看起来是 SubZero 问题。我也使用这个实例作为我的缓存提供程序并休眠二级缓存,所以我无法摆脱 SubZero。
我的想法是:
有两个不同的集群:一个用于缓存,另一个用于会话。不要为我工作,因为我不知道如何配置 Spring Session 以使用特定的 hazelcast 实例(传递实例名称或 bean 本身等)
指定哪些类应该与 SubZero 一起使用 - 但由于我有很多新类要添加 - 这不是最好的主意
将不胜感激任何帮助。
解决方案
推荐阅读
- html - Magento 1.9:如何将 HTML、BOOTSTRAP 和 CSS 添加到静态块?
- javascript - 为什么 setState 也会改变我之前添加到状态的道具
- javascript - 当 html 包含脚本标签时,monaco.editor.colorize 抛出异常
- javascript - 访问位置 [i] 处的 json 元素并在地图函数中更改它们的值
- python - 检查一个treeNode是否是另一个节点的祖先
- c++ - C++程序服务
- vbscript - 任务杀手脚本问题
- android - 如何在单击上传按钮时显示带有标题选择和选项相机、画廊和取消的对话框或操作表?
- pycharm - PyCharm 经常无法恢复其主窗口最大化
- java - 春季启动中“加载弹性搜索节点失败”?