diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/JmsHealthIndicator.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/JmsHealthIndicator.java index 0ca4c3adf1..401ccf4e5c 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/JmsHealthIndicator.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/JmsHealthIndicator.java @@ -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"); * you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ public class JmsHealthIndicator extends AbstractHealthIndicator { protected void doHealthCheck(Health.Builder builder) throws Exception { Connection connection = this.connectionFactory.createConnection(); try { + connection.start(); builder.up().withDetail("provider", connection.getMetaData().getJMSProviderName()); } diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/health/JmsHealthIndicatorTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/health/JmsHealthIndicatorTests.java index b10a1eb8cb..84f8f5b38f 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/health/JmsHealthIndicatorTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/health/JmsHealthIndicatorTests.java @@ -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"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import javax.jms.ConnectionMetaData; import javax.jms.JMSException; import org.junit.Test; +import org.mockito.Mockito; import static org.junit.Assert.assertEquals; import static org.mockito.BDDMockito.given; @@ -78,4 +79,21 @@ public class JmsHealthIndicatorTests { verify(connection, times(1)).close(); } + @Test + public void jmsBrokerUsesFailover() throws JMSException { + ConnectionFactory connectionFactory = mock(ConnectionFactory.class); + ConnectionMetaData connectionMetaData = mock(ConnectionMetaData.class); + given(connectionMetaData.getJMSProviderName()).willReturn("JMS test provider"); + Connection connection = mock(Connection.class); + given(connection.getMetaData()).willReturn(connectionMetaData); + Mockito.doThrow(new JMSException("Could not start", "123")) + .when(connection).start(); + given(connectionFactory.createConnection()) + .willReturn(connection); + JmsHealthIndicator indicator = new JmsHealthIndicator(connectionFactory); + Health health = indicator.health(); + assertEquals(Status.DOWN, health.getStatus()); + assertEquals(null, health.getDetails().get("provider")); + } + }