栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ActiveMq消费者读取ObjectMessage序列化时报错

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ActiveMq消费者读取ObjectMessage序列化时报错

控制台爆出的错误如下

Caused by: java.lang.ClassNotFoundException: Forbidden class com.atguigu.queue.Student! 
This class is not trusted to be serialized as ObjectMessage payload. Please take a look at
http://activemq.apache.org/objectmessage.html for more information on how to configure
trusted classes.

通过错误查看 ActiveMQ

官方解释如下 :

ObjectMessage 对象依赖于封送/取消封送对象有效负载的 Java 序列化。此过程通常被认为是不安全的,因为恶意负载可以利用主机系统。这就是为什么从版本5.12.2和5.13.0开始,ActiveMQ强制用户明确白名单可以使用ObjectMessages交换的软件包。

解决方案有两种:

       1.设置要取消序列化的受信任包的列表,例如setTrustedPackages()要读取的对象

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustedPackages(new ArrayList(Arrays.asList("org.apache.activemq.test,org.apache.camel.test".split(","))));

      2.允许您关闭安全检查并信任所有类。它对于测试目的很有用。setTrustAllPackages()

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustAllPackages(true);

另外,ActiveMQ官方通常不鼓励使用 ObjectMessage,因为它引入了生产者和消费者之间类路径的耦合,但 ActiveMQ 支持它们作为 JMS 规范的一部分。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号