SpringBoot + ActiveMQ - Comment mettre en confiance les paquets?

Je suis la création de deux springboot serveur & client les applications de communication à l'aide des JMS, et tout fonctionne bien avec la version 5.12.1 pour activemq, mais dès que j'ai mise à jour de la 5.12.3 version, j'obtiens l'erreur suivante :

org.springframework.jms.support.converter.MessageConversionException: Could not convert JMS message; nested exception is javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class MyClass! 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.

Je suis allé sur l'URL qui est fourni et j'ai compris que mon problème est lié à la nouvelle de la sécurité mis en œuvre dans le 5.12.2 libération de ActiveMQ, et je comprends que j'ai pu le résoudre par la définition de la confiance des paquets, mais je n'ai aucune idée sur l'endroit où placer telle configuration dans mon SpringBoot projet.

La seule référence que je suis en train de faire à la file d'attente JMS dans mon client et mon serveur est-il de l'URI de demande.propriétés et l'activation de JMS sur ma classe "main" avec @EnableJms, et voici ma configuration sur le courtage séparé :

@Configuration
@ConfigurationProperties(prefix = "activemq")
public class BrokerConfiguration {

    /**
     * Defaults to TCP 10000
     */
    private String connectorURI = "tcp://0.0.0.0:10000";
    private String kahaDBDataDir = "../../data/activemq";

    public String getConnectorURI() {
        return connectorURI;
    }

    public void setConnectorURI(String connectorURI) {
        this.connectorURI = connectorURI;
    }

    public String getKahaDBDataDir() {
        return kahaDBDataDir;
    }

    public void setKahaDBDataDir(String kahaDBDataDir) {
        this.kahaDBDataDir = kahaDBDataDir;
    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public BrokerService broker() throws Exception {
        KahaDBPersistenceAdapter persistenceAdapter = new KahaDBPersistenceAdapter();
        persistenceAdapter.setDirectory(new File(kahaDBDataDir));

        final BrokerService broker = new BrokerService();
        broker.addConnector(getConnectorURI());
        broker.setPersistent(true);
        broker.setPersistenceAdapter(persistenceAdapter);
        broker.setShutdownHooks(Collections.<Runnable> singletonList(new SpringContextHook()));
        broker.setUseJmx(false);

        final ManagementContext managementContext = new ManagementContext();
        managementContext.setCreateConnector(true);
        broker.setManagementContext(managementContext);

        return broker;
    }
}

Donc j'aimerais savoir où je suis censé pour spécifier la confiance des paquets.

Merci 🙂

OriginalL'auteur AntoineB | 2016-04-14