在Active MQ中不会反序列化对象消息

时间:2019-07-16 10:37:55

标签: java jms activemq

尝试连接到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?

1 个答案:

答案 0 :(得分:1)

我无法发表评论,所以我在这里发布。

您是否尝试过打印系统属性以确保它是正确的?

对于客户端,文档显示:

  

在客户端,您需要具有相同的机制[...]

它也给出了一个代码示例:

  

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

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

您应该同时为生产者和消费者编写此内容。