Add secured connection support to Artemis
This commit aligns the feature introduced in gh-6071 to Artemis. Closes gh-6179
This commit is contained in:
parent
731d326799
commit
a273d8d0c8
|
|
@ -31,6 +31,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||||
import org.springframework.beans.factory.ListableBeanFactory;
|
import org.springframework.beans.factory.ListableBeanFactory;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory to create an Artemis {@link ActiveMQConnectionFactory} instance from properties
|
* Factory to create an Artemis {@link ActiveMQConnectionFactory} instance from properties
|
||||||
|
|
@ -130,8 +131,14 @@ class ArtemisConnectionFactoryFactory {
|
||||||
NettyConnectorFactory.class.getName(), params);
|
NettyConnectorFactory.class.getName(), params);
|
||||||
Constructor<T> constructor = factoryClass.getConstructor(boolean.class,
|
Constructor<T> constructor = factoryClass.getConstructor(boolean.class,
|
||||||
TransportConfiguration[].class);
|
TransportConfiguration[].class);
|
||||||
return constructor.newInstance(false,
|
T connectionFactory = constructor.newInstance(false,
|
||||||
new TransportConfiguration[] { transportConfiguration });
|
new TransportConfiguration[] {transportConfiguration});
|
||||||
|
String user = this.properties.getUser();
|
||||||
|
if (StringUtils.hasText(user)) {
|
||||||
|
connectionFactory.setUser(user);
|
||||||
|
connectionFactory.setPassword(this.properties.getPassword());
|
||||||
|
}
|
||||||
|
return connectionFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2015 the original author or authors.
|
* Copyright 2012-2016 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -51,6 +51,16 @@ public class ArtemisProperties {
|
||||||
*/
|
*/
|
||||||
private int port = 61616;
|
private int port = 61616;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login user of the broker.
|
||||||
|
*/
|
||||||
|
private String user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login password of the broker.
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
private final Embedded embedded = new Embedded();
|
private final Embedded embedded = new Embedded();
|
||||||
|
|
||||||
public ArtemisMode getMode() {
|
public ArtemisMode getMode() {
|
||||||
|
|
@ -77,6 +87,22 @@ public class ArtemisProperties {
|
||||||
this.port = port;
|
this.port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUser() {
|
||||||
|
return this.user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser(String user) {
|
||||||
|
this.user = user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return this.password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
public Embedded getEmbedded() {
|
public Embedded getEmbedded() {
|
||||||
return this.embedded;
|
return this.embedded;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,8 @@ public class ArtemisAutoConfigurationTests {
|
||||||
.getBean(ActiveMQConnectionFactory.class);
|
.getBean(ActiveMQConnectionFactory.class);
|
||||||
assertThat(connectionFactory).isEqualTo(jmsTemplate.getConnectionFactory());
|
assertThat(connectionFactory).isEqualTo(jmsTemplate.getConnectionFactory());
|
||||||
assertNettyConnectionFactory(connectionFactory, "localhost", 61616);
|
assertNettyConnectionFactory(connectionFactory, "localhost", 61616);
|
||||||
|
assertThat(connectionFactory.getUser()).isNull();
|
||||||
|
assertThat(connectionFactory.getPassword()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -95,6 +97,19 @@ public class ArtemisAutoConfigurationTests {
|
||||||
assertNettyConnectionFactory(connectionFactory, "192.168.1.144", 9876);
|
assertNettyConnectionFactory(connectionFactory, "192.168.1.144", 9876);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nativeConnectionFactoryCredentials() {
|
||||||
|
load(EmptyConfiguration.class, "spring.artemis.mode:native",
|
||||||
|
"spring.artemis.user:user", "spring.artemis.password:secret");
|
||||||
|
JmsTemplate jmsTemplate = this.context.getBean(JmsTemplate.class);
|
||||||
|
ActiveMQConnectionFactory connectionFactory = this.context
|
||||||
|
.getBean(ActiveMQConnectionFactory.class);
|
||||||
|
assertThat(connectionFactory).isEqualTo(jmsTemplate.getConnectionFactory());
|
||||||
|
assertNettyConnectionFactory(connectionFactory, "localhost", 61616);
|
||||||
|
assertThat(connectionFactory.getUser()).isEqualTo("user");
|
||||||
|
assertThat(connectionFactory.getPassword()).isEqualTo("secret");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void embeddedConnectionFactory() {
|
public void embeddedConnectionFactory() {
|
||||||
load(EmptyConfiguration.class, "spring.artemis.mode:embedded");
|
load(EmptyConfiguration.class, "spring.artemis.mode:embedded");
|
||||||
|
|
|
||||||
|
|
@ -829,7 +829,9 @@ content into your application; rather pick only the properties that you need.
|
||||||
spring.artemis.embedded.topics= # Comma-separated list of topics to create on startup.
|
spring.artemis.embedded.topics= # Comma-separated list of topics to create on startup.
|
||||||
spring.artemis.host=localhost # Artemis broker host.
|
spring.artemis.host=localhost # Artemis broker host.
|
||||||
spring.artemis.mode= # Artemis deployment mode, auto-detected by default. Can be explicitly set to "native" or "embedded".
|
spring.artemis.mode= # Artemis deployment mode, auto-detected by default. Can be explicitly set to "native" or "embedded".
|
||||||
|
spring.artemis.password= # Login password of the broker.
|
||||||
spring.artemis.port=61616 # Artemis broker port.
|
spring.artemis.port=61616 # Artemis broker port.
|
||||||
|
spring.artemis.user= # Login user of the broker.
|
||||||
|
|
||||||
# SPRING BATCH ({sc-spring-boot-autoconfigure}/batch/BatchProperties.{sc-ext}[BatchProperties])
|
# SPRING BATCH ({sc-spring-boot-autoconfigure}/batch/BatchProperties.{sc-ext}[BatchProperties])
|
||||||
spring.batch.initializer.enabled=true # Create the required batch tables on startup if necessary.
|
spring.batch.initializer.enabled=true # Create the required batch tables on startup if necessary.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue