ActiveMQ ObjectMessage 中的映射抛出 ClassCastException:无法分配 java.util.CollSer 的实例?
Map in ActiveMQ ObjectMessage throws ClassCastException: cannot assign instance of java.util.CollSer?
我将 JMS ObjectMessage
与 ActiveMQ 结合使用,以在其 setObject()
函数中传输可序列化的 POJO。
关于我的客户:
ObjectMessage omsg = getSession().createObjectMessage();
omsg.setObject(objectToSend);
objectToSend
是一个包含 Map
:
的 POJO
private Map<Integer, Double> tickIdToPrice;
在我的服务器上,我尝试解码:
if (omsg.getObject() instanceof AJavaClass) {
但这会导致 Exception
:
java.lang.ClassCastException: cannot assign instance of java.util.CollSer
to field com.x.z.y.RequestPriceResult.tickIdToPrice of type
java.util.Map in instance of com.x.z.y.RequestPriceResult
有人知道是什么导致了这个异常吗?关于 CollSer
.
几乎找不到
找到了。
CollSet 定义为:
A unified serialization proxy class for the immutable collections.
在我的客户端上,我使用 Map.of
创建了一个地图。这创建了一个不可变的映射,在序列化时使用 CollSer。这导致 activemq 出现问题,使用普通的可变映射序列化并工作正常。
我将 JMS ObjectMessage
与 ActiveMQ 结合使用,以在其 setObject()
函数中传输可序列化的 POJO。
关于我的客户:
ObjectMessage omsg = getSession().createObjectMessage();
omsg.setObject(objectToSend);
objectToSend
是一个包含 Map
:
private Map<Integer, Double> tickIdToPrice;
在我的服务器上,我尝试解码:
if (omsg.getObject() instanceof AJavaClass) {
但这会导致 Exception
:
java.lang.ClassCastException: cannot assign instance of java.util.CollSer
to field com.x.z.y.RequestPriceResult.tickIdToPrice of type
java.util.Map in instance of com.x.z.y.RequestPriceResult
有人知道是什么导致了这个异常吗?关于 CollSer
.
找到了。
CollSet 定义为:
A unified serialization proxy class for the immutable collections.
在我的客户端上,我使用 Map.of
创建了一个地图。这创建了一个不可变的映射,在序列化时使用 CollSer。这导致 activemq 出现问题,使用普通的可变映射序列化并工作正常。