Java 发送ObjectMessage的ActiveMQ属性可序列化_包

Java 发送ObjectMessage的ActiveMQ属性可序列化_包,java,apache-camel,activemq,serializable,Java,Apache Camel,Activemq,Serializable,使用SpringBoot运行一个简单的项目,并通过@Configuration创建ActiveMQ代理 在Main方法中,在SpringApplication.run之前,我设置了这个 System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*"); 在创建代理和ActiveMQConnectionFactory时信任所有包 factory.setTrustAllPackages(true); 路线: from("ti

使用SpringBoot运行一个简单的项目,并通过@Configuration创建ActiveMQ代理

在Main方法中,在SpringApplication.run之前,我设置了这个

System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*");
在创建代理和ActiveMQConnectionFactory时信任所有包

factory.setTrustAllPackages(true);
路线:

from("timer://getStuffDone?period=5s") //just a test
    .to("bean://superProcessor?method=process")  // new a simple object and puts it as body
    .to("activemq:queue:superQueue?jmsMessageType=Object");
对象:

public class SuperObject {
public String name;}
但是,我明白了:

原因:org.apache.camel.NoTypeConversionAvailableException:没有类型转换器可用于从类型:net.supertest.SuperObject转换为所需类型:java.io.Serializable,值为net.supertest。SuperObject@2b38b4cb位于org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:206)~[camel-core-2.22.1.jar:2.22.1] 在org.apache.camel.component.jms.jmsbind.createjmsmesessagefortype(jmsbind.java:672)~[camel-jms-2.22.1.jar:2.22.1]

如果我实现Serializable,它工作得很好,但我希望它能自动处理,因为我在Serializable_包中使用了通配符。 有没有线索说明它为什么没有按预期工作?
ActiveMQ版本5.15.6

否,属性
org.apache.ActiveMQ.SERIALIZABLE_PACKAGES
不会免除您实现
SERIALIZABLE
。它只是代理上的一个安全设置,默认情况下阻止ObjectMessage封送/解封

要允许ObjectMessage序列化,您必须在代理上用
org.apache.activemq.SERIALIZABLE_packages
配置所需的包,在客户端上用
factory.setTrustedPackages
配置所需的包

不管这种配置如何,您都必须将对象实现为可序列化的

从:

ObjectMessage对象依赖于封送/解组对象负载的Java序列化。此过程通常被视为不安全的,因为恶意负载可以攻击主机系统。这就是为什么从版本5.12.2和5.13.0开始,ActiveMQ强制用户显式地将可交换的包列入白名单使用ObjectMessages创建


不,属性
org.apache.activemq.SERIALIZABLE_PACKAGES
并不免除您实现
SERIALIZABLE
。它只是代理上的一个安全设置,默认情况下阻止ObjectMessage封送/解封

要允许ObjectMessage序列化,您必须在代理上用
org.apache.activemq.SERIALIZABLE_packages
配置所需的包,在客户端上用
factory.setTrustedPackages
配置所需的包

不管这种配置如何,您都必须将对象实现为可序列化的

从:

ObjectMessage对象依赖于封送/解组对象负载的Java序列化。此过程通常被视为不安全的,因为恶意负载可以攻击主机系统。这就是为什么从版本5.12.2和5.13.0开始,ActiveMQ强制用户显式地将可交换的包列入白名单使用ObjectMessages创建


当…谢谢你的回答!当…谢谢你的回答!