尝试连接到ActiveMQ 5.15.9并获取消息时,我遇到了错误消息。
[2019-07-16 09:25:38.61] ERRORDTL [1563269138610] javax.jms.JMSException:无法从内容构建主体。可序列化的类不适用于代理。原因:java.lang.ClassNotFoundException:禁止的类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?
答案 0 :(得分:1)
我无法发表评论,所以我在这里发布。
您是否尝试过打印系统属性以确保它是正确的?
对于客户端,文档显示:
在客户端,您需要具有相同的机制[...]
它也给出了一个代码示例:
setTrustAllPackages()允许您关闭安全检查并信任所有类。对于测试目的很有用。
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustAllPackages(true);
您应该同时为生产者和消费者编写此内容。