控制台爆出的错误如下
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 规范的一部分。