2016-06-30 19 views
0

とActiveMQのセキュリティ上の問題解決のために:春ブーツ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="*" 

to application VM引数。

はapplication.propertiesや私の春のブートアプリケーションの内部のいくつかの他の方法を経由して、このパラメータを供給することが可能ですか?

答えて

2

あなたは春のブートアプリケーションにで設定することができます。それはベースパッケージが含まれているため

@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); 
} 

あなたが既存のパッケージの一覧を取得し、それに追加する必要がある理由は次のとおりです。設定のクラスでは、このように、ActiveMQConnectionFactoryのハンドルを取得し、これらを設定する必要がありますなどの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). 

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

2

あなたはより多くの制御をしたい場合は、すべてのパッケージ、またはspring.activemq.packages.trusted=com.example.foo,com.example.barを信頼するspring.activemq.packages.trust-all=trueを使用することができます。