SpringBoot + ActiveMQ - Wie man Vertrauenswürdige Pakete?
Ich bin Schaffung von zwei springboot server & client-Anwendungen die Kommunikation mit JMS, und alles ist in Ordnung, mit der Veröffentlichung 5.12.1
für activemq, aber sobald ich update auf die 5.12.3
version, ich bekomme die folgende Fehlermeldung :
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.
Ging ich auf die URL bereitgestellt wird und ich herausgefunden, dass mein Problem mit den neuen Sicherheitsmaßnahmen in der 5.12.2
release von ActiveMQ, und ich verstehe, dass ich es beheben könnte durch die Definition der vertrauenswürdigen Pakete, aber ich habe keine Idee, wo man solch eine Konfiguration in meinem SpringBoot Projekt.
Die einzige Referenz, die ich mache, um die JMS-Warteschlange in mein client und mein server ist die Einrichtung, es ist URI in Anwendung.Eigenschaften und aktivieren der JMS auf mein "main" - Klasse mit @EnableJms
, und hier ist meine Konfiguration, die auf dem separaten broker :
@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;
}
}
Also ich würde gerne wissen, wo ich bin, soll angeben, die Vertrauenswürdige Pakete.
Dank 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie die folgende bean:
Die Möglichkeit, dies über einen Konfigurations-Eigenschaft ist Hinzugefügt worden für die nächste Version:
https://github.com/spring-projects/spring-boot/issues/5631
setTrustedPackage
dauert nur einList<String>
als parameter und nicht einenString
.Können Sie einfach legen Sie eine der unten spring boot Eigenschaften in
application.properties
gesetzt Vertrauenswürdige Pakete.spring.activemq.packages.trust-all=true
oder
spring.activemq.packages.trusted=<package1>,<package2>,<package3>
Methode:
public void setTrustedPackages(List<String> trustedPackages)
Beschreibung: fügen Sie alle Pakete, die verwendet werden, senden und empfangen
Message
Objekt.Code :
connectionFactory.setTrustedPackages(Arrays.asList("org.api","java.util"))
Implementated Code:
Ich bin Einstellung für Java_opts so etwas wie unten und Weitergabe an java-Befehl und seine Arbeit für mich.
Ja, ich fand es config in die neue version