Spring 启动 ActiveMQ

Spring Boot ActiveMQ

在我的 Spring Boot 1.4.0.BUILD-SNAPSHOT 应用程序中,为了修复 ActiveMQ 安全问题:

This class is not trusted to be serialized as ObjectMessage payload. Please take a look at http://activemq.apache.org/objectmessage.html for more information on how to configure trusted classes.

我必须添加以下参数(我想允许所有 类)

-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*"

到应用程序 VM 参数。

是否可以通过 application.properties 或我的 Spring 引导应用程序内部的其他方式提供此参数?

您可以使用 spring.activemq.packages.trust-all=true 来信任所有包,或者如果您想要更多控制,则可以使用 spring.activemq.packages.trusted=com.example.foo,com.example.bar

您可以在 spring 启动应用程序中设置。在配置 class 中,您需要获取 ActiveMQConnectionFactory 的句柄并进行设置,如下所示:

@Inject
private ActiveMQConnectionFactory connectionFactory;

private void addTrustedPackage(){
     final List<String> trustedPackageList = new ArrayList<>(connectionFactory.getTrustedPackages());
     trustedPackageList.add("the packages that you want to add");
     connectionFactory.setTrustedPackages(trustedPackageList);
}

您需要获取现有软件包列表并添加到其中的原因是因为它包含 java.lang 等基础软件包

您也可以使用

在 application.properties 文件中设置这些
spring.activemq.packages.trust-all=false # Trust all packages.
spring.activemq.packages.trusted= # Comma-separated list of specific packages to trust (when not trusting all packages).

参考:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/common-application-properties.html