Merge branch '1.2.x'
This commit is contained in:
@@ -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
|
||||
@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
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user