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.25.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 规范的一部分。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鲁蛋儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值