gpt4 book ai didi

java - ActiveMQ 属性 SERIALIZABLE_PACKAGES 发送 ObjectMessage

转载 作者:行者123 更新时间:2023-12-02 01:49:41 25 4
gpt4 key购买 nike

使用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.Serialized,其值为 net.supertest.SuperObject@2b38b4cb。 apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:206) ~[camel-core-2.22.1.jar:2.22.1] 在 org.apache.camel.component.jms.JmsBinding.createJmsMessageForType(JmsBinding.java:672) ~[camel-jms-2.22.1.jar:2.22.1]

如果我实现 Serialized,它会很好地工作......,但我希望它能自动处理它,因为我在 SERIALIZABLE_PACKAGES 中使用了通配符。关于为什么它没有按预期工作的任何线索?ActiveMQ版本5.15.6

最佳答案

不,属性org.apache.activemq.SERIALIZABLE_PACKAGES并不能免除您实现 Serializable 。这只是代理上的一个安全设置,用于默认阻止 ObjectMessage marshal/unmarshal。

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

无论这种配置如何,您都必须将对象实现为 Serializable .

来自ActiveMQ Docs :

ObjectMessage objects depend on Java serialization of marshal/unmarshal object payload. This process is generally considered unsafe as malicious payload can exploit the host system. That's why starting with versions 5.12.2 and 5.13.0, ActiveMQ enforces users to explicitly whitelist packages that can be exchanged using ObjectMessages.

关于java - ActiveMQ 属性 SERIALIZABLE_PACKAGES 发送 ObjectMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53167765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com