Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActiveMQ ObjectMessage中的映射抛出ClassCastException:无法分配java.util.CollSer的实例?_Java_Activemq_Spring Messaging - Fatal编程技术网

ActiveMQ ObjectMessage中的映射抛出ClassCastException:无法分配java.util.CollSer的实例?

ActiveMQ ObjectMessage中的映射抛出ClassCastException:无法分配java.util.CollSer的实例?,java,activemq,spring-messaging,Java,Activemq,Spring Messaging,我将JMSObjectMessage与ActiveMQ一起使用,以在其setObject()函数中传输可序列化的POJO 关于我的客户: ObjectMessage omsg=getSession().createObjectMessage(); omsg.setObject(objectToSend); objectToSend是一个包含映射的POJO: private-Map-tickIdToPrice; 在我的服务器上,我尝试解码: if(AJavaClass的omsg.getObje

我将JMS
ObjectMessage
与ActiveMQ一起使用,以在其
setObject()函数中传输可序列化的POJO

关于我的客户:

ObjectMessage omsg=getSession().createObjectMessage();
omsg.setObject(objectToSend);
objectToSend
是一个包含
映射的POJO

private-Map-tickIdToPrice;
在我的服务器上,我尝试解码:

if(AJavaClass的omsg.getObject()实例){
但这会导致异常

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出现问题,使用普通的可变映射进行序列化,效果很好。

如果可能的话,我会阻止您使用
ObjectMessage
ObjectMessage
取决于Java seriali联合国秘书处封送通常被视为不安全的有效负载,因为恶意有效负载可以利用主机系统进行攻击。已经为此创建了封送。还有许多其他与安全性无关的问题需要解决。除了体系结构之外,本文对如何使用JSON替换
ObjectMessage
等提出了很好的建议还有
ObjectMessage的安全问题
值得注意的是,Java序列化也很慢。Cheers@JustinBertram,SERIALIZABLE_PACKAGES设置不是解决了大多数序列化安全问题吗?我目前使用DTO作为ObjectMessage,并且仍然非常喜欢Java序列化的简单性。我可能会作为paylo转到protobuff随着项目变得越来越成熟,ad。将允许反序列化的包列入白名单有助于减少安全问题,但不一定能消除这些问题。而且您仍然存在性能和体系结构问题。ActiveMQ 5.x和都是多协议代理。通过使用
ObjectMessage
可以锁定客户端例如,您不能使用Python中的STOMP或JavaScript或C#中的AMQP。也许您现在不需要这种灵活性,但将来可能需要。现在限制自己,而没有明确、显著的好处似乎是不明智的。