Browse Source

Merge branch '1.2.x'

pull/4511/merge
Andy Wilkinson 10 years ago
parent
commit
008f2a8874
  1. 35
      spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java

35
spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java

@ -95,7 +95,7 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext @@ -95,7 +95,7 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext
*/
public static final String DISPATCHER_SERVLET_NAME = ServletContextInitializerBeans.DISPATCHER_SERVLET_NAME;
private EmbeddedServletContainer embeddedServletContainer;
private volatile EmbeddedServletContainer embeddedServletContainer;
private ServletConfig servletConfig;
@ -138,10 +138,10 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext @@ -138,10 +138,10 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext
@Override
protected void finishRefresh() {
super.finishRefresh();
startEmbeddedServletContainer();
if (this.embeddedServletContainer != null) {
publishEvent(new EmbeddedServletContainerInitializedEvent(this,
this.embeddedServletContainer));
EmbeddedServletContainer localContainer = startEmbeddedServletContainer();
if (localContainer != null) {
publishEvent(
new EmbeddedServletContainerInitializedEvent(this, localContainer));
}
}
@ -151,15 +151,17 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext @@ -151,15 +151,17 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext
stopAndReleaseEmbeddedServletContainer();
}
private synchronized void createEmbeddedServletContainer() {
if (this.embeddedServletContainer == null && getServletContext() == null) {
private void createEmbeddedServletContainer() {
EmbeddedServletContainer localContainer = this.embeddedServletContainer;
ServletContext localServletContext = getServletContext();
if (localContainer == null && localServletContext == null) {
EmbeddedServletContainerFactory containerFactory = getEmbeddedServletContainerFactory();
this.embeddedServletContainer = containerFactory
.getEmbeddedServletContainer(getSelfInitializer());
}
else if (getServletContext() != null) {
else if (localServletContext != null) {
try {
getSelfInitializer().onStartup(getServletContext());
getSelfInitializer().onStartup(localServletContext);
}
catch (ServletException ex) {
throw new ApplicationContextException("Cannot initialize servlet context",
@ -285,16 +287,19 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext @@ -285,16 +287,19 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext
}
}
private void startEmbeddedServletContainer() {
if (this.embeddedServletContainer != null) {
this.embeddedServletContainer.start();
private EmbeddedServletContainer startEmbeddedServletContainer() {
EmbeddedServletContainer localContainer = this.embeddedServletContainer;
if (localContainer != null) {
localContainer.start();
}
return localContainer;
}
private synchronized void stopAndReleaseEmbeddedServletContainer() {
if (this.embeddedServletContainer != null) {
private void stopAndReleaseEmbeddedServletContainer() {
EmbeddedServletContainer localContainer = this.embeddedServletContainer;
if (localContainer != null) {
try {
this.embeddedServletContainer.stop();
localContainer.stop();
this.embeddedServletContainer = null;
}
catch (Exception ex) {

Loading…
Cancel
Save