ActiveMQ ObjectMessage Security不能使用SERIALIZABLE_PACKAGES变量在linux上运行

时间:2016-03-01 08:03:38

标签: java linux jms activemq

我从activemq object message security article读取,来自activemq 5.12.2

  

ActiveMQ强制用户明确将白名单列入白名单   使用ObjectMessages交换。

我将-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*"放入env脚本到ACTIVEMQ_OPTS env变量中,如文章所述,但错误仍然存​​在。

我在Windows中修复它,但它在linux中不起作用。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:0)

你拥有的财产是正确的。加载该属性的源位于:

activemq-client/src/main/java/org/apache/activemq/util/ClassLoadingAwareObjectInputStream.java

您是否可以检查您使用的是正确版本的ActiveMQ客户端库 - 它需要大于或等于5.12.2或5.13.0。

作为一个更广泛的观点,在系统之间交换消息时,通常应将ObjectMessage用法视为反模式,因为它将生产者和消费者代码锁定为使用包含消息有效负载类的库的完全相同版本(见http://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html)。通常最好使用文本或二进制有效负载;如果必须序列化对象,请通过Java序列化以外的机制来完成,例如协议缓冲区,它定义了版本化的接口契约。