可查询的可序列化类:在ActiveMQ中查看消息时出现java.lang.ClassNotFoundException

时间:2017-03-29 23:19:27

标签: java jms activemq classnotfoundexception

我希望看到已在ActiveMQ队列中排队的邮件内容。 我打开了web-console。(http://localhost:8161/admin/queues.jsp)并点击了队列消息的message-id。它在"消息详细信息"中给出了以下错误。窗口,而不是给出消息的内容。

  

" javax.jms.JMSException:无法从内容构建正文。   可序列化的类不可用于代理。原因:   抛出java.lang.ClassNotFoundException:"

此异常的原因是什么?我需要做些什么来摆脱这个?

2 个答案:

答案 0 :(得分:3)

我使用ActiveMQ版本5.8.0看到了同样的错误

在我的情况下,它是一个red herring,ActiveMQ控制台无法反序列化它无法访问该类所在jar的消息,但消费者应用程序可以访问该消息,并且消息是在没有问题的情况下从队列传递给消费者。

我有兴趣看看这里是否有问题的解决方案(在控制台中查看消息),以及如何在更新版本的ActiveMQ中处理此问题。

答案 1 :(得分:1)

如OwIR所述,您需要将包含类的jar文件的路径设置到wrapper.java.classpath.3中的%ACTIVEMQ_HOME%\bin\win64\wrapper.conf属性上。

更新以上属性后,您可能会遇到以下异常

Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class

为了对其进行修复,请将wrapper.java.additional.13属性设置为-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="<choose_the_packages_set_it_here>"

您也可以使用-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*"作为值,但是使用通配符可能不安全。

这对我有用!!希望对您有帮助