activemq objectmessage中的Map引发classcastexception:无法分配java.util.collser的示例?

91zkwejq  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(372)

我在用jms ObjectMessage 使用activemq在其 setObject() 功能。
关于我的客户:

ObjectMessage omsg = getSession().createObjectMessage();
omsg.setObject(objectToSend);

这个 objectToSend pojo包含 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 .

doinxwow

doinxwow1#

找到了。
collset定义为:

A unified serialization proxy class for the immutable collections.

在我的客户身上 Map.of 创建Map。这创建了一个不可变的Map,当序列化时使用collser。这导致activemq出现问题,使用普通的可变Map序列化并正常工作。

相关问题