Do projektu typu spring mvc (nie spring bootowy) dodałem funkcjonalność spring boot actuatora.
Konfiguracja actuatora:
@Configuration
@Import({EndpointWebMvcAutoConfiguration.class,
ManagementServerPropertiesAutoConfiguration.class, EndpointAutoConfiguration.class,
HealthIndicatorAutoConfiguration.class,PublicMetricsAutoConfiguration.class})
public class ActuatorConfig {
@Bean
@Autowired
//Define the HandlerMapping similar to RequestHandlerMapping to expose the endpoint
public EndpointHandlerMapping endpointHandlerMapping(
Collection<? extends MvcEndpoint> endpoints
){
return new EndpointHandlerMapping(endpoints);
}
@Bean
@Autowired
//define the HealthPoint endpoint
public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate){
return new HealthMvcEndpoint(delegate, false);
}
@Bean
@Autowired
//define the MetricsEndpoint endpoint
public MetricsMvcEndpoint metricsMvcEndpoint(MetricsEndpoint delegate){
return new MetricsMvcEndpoint(delegate);
}
}
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
Actuator działa, prawidłowo wystawiane są endpointy. Natomiast po dodaniu actuatora funkcjonalność aplikacji związana z dostępem do bazy danych, która wcześniej działała prawidłowo teraz wyrzuca błędy.
Błąd:
java.lang.RuntimeException: java.sql.SQLException: Connection is not associated with a managed connection.org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6@4ef97e9d
Występujący w niniejszym fragmencie kodu:
@Autowired
SqlSession sqlSession;
...
ps = sqlSession.getConnection().prepareStatement(sqlString, Statement.RETURN_GENERATED_KEYS);
Najwidoczniej actuator w jakiś sposób koliduje z jakimiś elementami. Ma ktoś jakiś pomysł dlaczego tak się może dziać i w jaki sposób temu zaradzić?