From c349cb66ba5d99b628e67a93315cefe805d452d1 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Sat, 11 Jan 2014 07:38:17 +0000 Subject: [PATCH] Ensure SpringApplication closes its ApplicationContext ...even if the CommandLineRunners fail and we drop to the error handling path. Fixes gh-211 --- .../springframework/boot/SpringApplication.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index 9bb7cd3977..42e3b3c8b7 100644 --- a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -360,18 +360,25 @@ public class SpringApplication { return context; } catch (RuntimeException ex) { - multicaster.multicastEvent(new SpringApplicationErrorEvent(this, context, - args, ex)); + handleError(context, multicaster, ex, args); throw ex; } catch (Error ex) { - multicaster.multicastEvent(new SpringApplicationErrorEvent(this, context, - args, ex)); + handleError(context, multicaster, ex, args); throw ex; } } + protected void handleError(ConfigurableApplicationContext context, + ApplicationEventMulticaster multicaster, Throwable ex, String... args) { + multicaster.multicastEvent(new SpringApplicationErrorEvent(this, context, args, + ex)); + if (context != null) { + context.close(); + } + } + private void registerListeners(ApplicationEventMulticaster multicaster, Set sources) { for (Object object : sources) {