java - 对象消息没有在 Active MQ 中反序列化
问题描述
我在尝试连接到 ActiveMQ 5.15.9 并获取消息时遇到错误。
[2019-07-16 09:25:38.61] ERRORDTL [1563269138610]javax.jms.JMSException:无法从内容构建正文。可序列化类对代理不可用。原因:java.lang.ClassNotFoundException: Forbidden class com.xxx.yyy.zzz.aaa!不信任此类被序列化为 ObjectMessage 有效负载。请查看http://activemq.apache.org/objectmessage.html以获取有关如何配置受信任类的更多信息。在 org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36) 在 org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:213)
只是为了在 ${ACTIVEMQ_HOME}/bin/env 中进行测试,我做了以下条目。
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.SERIALIZABLE_PACKAGES=*"
并重新启动了 MQ,但仍然出现同样的错误。上面使用的配置是否正确?我是否也需要在客户端使用 setTrustedPackages 或 setTrustAllPackages ?
解决方案
我无法发表评论,所以我在这里发帖。
您是否尝试打印系统属性以确保它是正确的?
对于客户端,文档说:
在客户端,您需要具有相同的机制 [...]
它还给出了一个代码示例:
setTrustAllPackages() 允许您关闭安全检查并信任所有类。它对于测试目的很有用。
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustAllPackages(true);
你应该为生产者和消费者编写这个。
推荐阅读
- python - Django,如何从 DateField 中每月提取值列表?
- java - nginx.conf 中的“location /logs”和“location /logs/”有什么区别
- javascript - 如何在具有背景颜色的同时一一粘贴标题?
- scala - Scala 以列表为键、字符串为值的地图展平
- ios - HTML
- python - 描述中提到的具有所有子图的大图
- java - 我正在制作一个简单的 JavaFx 程序。只需一个按钮即可查看错误
- vb.net - 有人如何从数据库表中选择 datat 到树视图控件 VB.NET?
- javascript - Javascript Audio Play() 函数在 Microsoft Edge 中无法正常工作
- java - MySQL - Java - 使用定义的方法执行 - 语句