Prevent accidental failure of deployed war when management.port is set
We can't support (yet) embedded containers inside a deployed war (class loader conflicts are inevitable, really). Until we figure out a way to do it, we should just log a warning and advise the user to switch to JMX for the actuator endpoints. See gh-552
This commit is contained in:
parent
3496f3f9dc
commit
45315a97ff
|
@ -25,6 +25,8 @@ import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||||
|
@ -50,6 +52,7 @@ import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoCo
|
||||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||||
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext;
|
import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext;
|
||||||
|
import org.springframework.boot.context.embedded.EmbeddedServletContainerException;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
|
@ -81,6 +84,8 @@ import org.springframework.web.servlet.DispatcherServlet;
|
||||||
public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||||
ApplicationListener<ContextRefreshedEvent> {
|
ApplicationListener<ContextRefreshedEvent> {
|
||||||
|
|
||||||
|
private static Log logger = LogFactory.getLog(EndpointWebMvcAutoConfiguration.class);
|
||||||
|
|
||||||
private ApplicationContext applicationContext;
|
private ApplicationContext applicationContext;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -184,7 +189,20 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
childContext.refresh();
|
try {
|
||||||
|
childContext.refresh();
|
||||||
|
}
|
||||||
|
catch (RuntimeException e) {
|
||||||
|
// No support currently for deploying a war with management.port=<different>,
|
||||||
|
// and this is the signature of that happening
|
||||||
|
if (e instanceof EmbeddedServletContainerException
|
||||||
|
|| e.getCause() instanceof EmbeddedServletContainerException) {
|
||||||
|
logger.warn("Could not start embedded container (management endpoints are still available through JMX)");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static enum ManagementServerPort {
|
protected static enum ManagementServerPort {
|
||||||
|
|
Loading…
Reference in New Issue