From 29ac6fc154559f807c3d82acad080b2118d477c8 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 27 May 2016 12:24:22 +0100 Subject: [PATCH] Tolerate API changes between Tomcat 7 and Tomcat 8 See gh-6053 --- .../tomcat/TomcatEmbeddedServletContainer.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainer.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainer.java index 2f60bcba54..3da8455723 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainer.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainer.java @@ -98,7 +98,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer Context context = findContext(); try { - ContextBindings.bindClassLoader(context, context.getNamingToken(), + ContextBindings.bindClassLoader(context, getNamingToken(context), getClass().getClassLoader()); } catch (NamingException ex) { @@ -191,7 +191,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer } finally { Context context = findContext(); - ContextBindings.unbindClassLoader(context, context.getNamingToken(), + ContextBindings.unbindClassLoader(context, getNamingToken(context), getClass().getClassLoader()); } } @@ -312,4 +312,15 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer return this.tomcat; } + private Object getNamingToken(Context context) { + try { + return context.getNamingToken(); + } + catch (NoSuchMethodError ex) { + // Use the context itself on Tomcat 7 + return context; + } + + } + }