Apache不更新文档吗? Java的主要错误

时间:2018-07-30 14:28:58

标签: java activemq

我收到此错误

  

无法显示ObjectMessage正文。原因:无法根据内容构建主体。可序列化的类不适用于代理。原因:java.lang.ClassNotFoundException:禁止的类com.company.data.TicketData!不信任此类可以序列化为ObjectMessage有效内容。请查看this,以获取有关如何配置可信类的更多信息。

我在代码中添加了System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES","*");,该代码调用了JMS的创建,但不起作用。

我还在cmd中设置了setx org.apache.activemq.SERIALIZABLE_PACKAGES "*",但仍然是相同的错误。

即使您检查了错误page

它讨论了下载Apache ActiveMQ时不存在的环境脚本文件。

我该怎么办?? / config中有一些文件,但是我看不到如何启用它?为什么Apache的文档甚至不起作用?

1 个答案:

答案 0 :(得分:0)

这是预期的。如果

,您的代理的Java运行时只能反序列化ObjectMessage。
  1. 该类是代理的类路径的一部分。例外 “ java.lang.ClassNotFoundException”听起来就是问题所在。尝试将公司的jar文件添加到ActiveMQ类路径中。
  2. 该类实现java.io.Serializable。给你添加东西 客户端的Java运行时将无济于事。经纪人必须知道,所以 最好的办法是让您的类实现该接口。
  3. ActiveMQ 还需要“信任”一个对象。因此,您的经纪人必须将此类列入白名单,例如,使用-Dorg.apache.activemq.SERIALIZABLE_PACKAGES = *启动Broker,这仅适用于ActiveMQ版本> 5.12.2

坦白说,您应该远离JMS ObjectMessage。前段时间在该区域中存在一个ActiveMQ错误,这是一个持续存在的安全漏洞。尝试将BytesMessage作为外部对象发送,或者也许将XML作为JSON格式将您的对象作为TextMessage发送。