我在集群中使用 hazelcast -2.5。我正在尝试在我的 Hazelcast 映射(字符串,ArrayList)的存储加载实现中加载用户定义对象的 ArrayList(带有几个字符串字段和一个整数)。初始加载都没有给我任何例外。但是,如果由于在地图上对地图中没有值的键的 get 调用调用了加载(因此调用了加载),我会看到以下异常被抛出(我也在做一个删除在该时间点之后的地图上的操作):
Store thrown exception for CONCURRENT_MAP_REMOVE
它给了我一个类转换异常,说明我的 UD 对象不能转换为字符串。如果我在实现中遗漏了某些内容,我不会感到惊讶——只是在进行此调用时,我试图在地图上执行 get 操作并将结果分配给用户定义对象的 ArrayList。store-load 中的加载操作也返回一个用户定义对象的 ArrayList(store-load 的声明方式相同)。
WARNING: [192.168.1.1]:5703 [dev] Store thrown exception for CONCURRENT_MAP_REMOVE
java.lang.ClassCastException: models.test.TestClass cannot be cast to java.lang.String
at models.test.StoreLoadTestMap.load(StoreLoadTestMap.java:1)
at com.hazelcast.impl.concurrentmap.MapStoreWrapper.load(MapStoreWrapper.java:143)
at com.hazelcast.impl.ConcurrentMapManager$RemoveOperationHandler$RemoveLoader.doMapStoreOperation(ConcurrentMapManager.java:2681)
at com.hazelcast.impl.ConcurrentMapManager$AbstractMapStoreOperation.run(ConcurrentMapManager.java:3860)
at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:38)
关于解决此问题的任何想法?