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