diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfiguration.java index bfbacbf481..08fcc3f3f4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfiguration.java @@ -57,14 +57,17 @@ public class JndiConnectionFactoryAutoConfiguration { private final JmsProperties properties; + private final JndiLocatorDelegate jndiLocatorDelegate; + public JndiConnectionFactoryAutoConfiguration(JmsProperties properties) { this.properties = properties; + this.jndiLocatorDelegate = JndiLocatorDelegate.createDefaultResourceRefLocator(); } @Bean public ConnectionFactory connectionFactory() throws NamingException { if (StringUtils.hasLength(this.properties.getJndiName())) { - return new JndiLocatorDelegate().lookup(this.properties.getJndiName(), + return this.jndiLocatorDelegate.lookup(this.properties.getJndiName(), ConnectionFactory.class); } return findJndiConnectionFactory(); @@ -73,7 +76,7 @@ public class JndiConnectionFactoryAutoConfiguration { private ConnectionFactory findJndiConnectionFactory() { for (String name : JNDI_LOCATIONS) { try { - return new JndiLocatorDelegate().lookup(name, ConnectionFactory.class); + return this.jndiLocatorDelegate.lookup(name, ConnectionFactory.class); } catch (NamingException ex) { // Swallow and continue diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderJndiConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderJndiConfiguration.java index 0c9c8cacb2..052f222936 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderJndiConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderJndiConfiguration.java @@ -60,7 +60,8 @@ class MailSenderJndiConfiguration { public Session session() { String jndiName = this.properties.getJndiName(); try { - return new JndiLocatorDelegate().lookup(jndiName, Session.class); + return JndiLocatorDelegate.createDefaultResourceRefLocator().lookup(jndiName, + Session.class); } catch (NamingException ex) { throw new IllegalStateException( diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfigurationTests.java index 800746ee02..89c6e775a0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JndiConnectionFactoryAutoConfigurationTests.java @@ -93,7 +93,16 @@ public class JndiConnectionFactoryAutoConfigurationTests { @Test public void jndiNamePropertySet() { - ConnectionFactory connectionFactory = configureConnectionFactory("myCF"); + ConnectionFactory connectionFactory = configureConnectionFactory( + "java:comp/env/myCF"); + this.contextRunner.withPropertyValues("spring.jms.jndi-name=java:comp/env/myCF") + .run(assertConnectionFactory(connectionFactory)); + } + + @Test + public void jndiNamePropertySetWithResourceRef() { + ConnectionFactory connectionFactory = configureConnectionFactory( + "java:comp/env/myCF"); this.contextRunner.withPropertyValues("spring.jms.jndi-name=myCF") .run(assertConnectionFactory(connectionFactory)); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfigurationTests.java index 1d6cd71929..5c5881aa41 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfigurationTests.java @@ -150,8 +150,18 @@ public class MailSenderAutoConfigurationTests { @Test public void jndiSessionAvailable() { - Session session = configureJndiSession("foo"); - this.contextRunner.withPropertyValues("spring.mail.jndi-name:foo") + Session session = configureJndiSession("java:comp/env/foo"); + testJndiSessionLookup(session, "java:comp/env/foo"); + } + + @Test + public void jndiSessionAvailableWithResourceRef() { + Session session = configureJndiSession("java:comp/env/foo"); + testJndiSessionLookup(session, "foo"); + } + + private void testJndiSessionLookup(Session session, String jndiName) { + this.contextRunner.withPropertyValues("spring.mail.jndi-name:" + jndiName) .run((context) -> { assertThat(context).hasSingleBean(Session.class); Session sessionBean = context.getBean(Session.class);