@ -205,9 +205,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -205,9 +205,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
/** Flag that indicates whether this context has been closed already. */
/** Reference to the JVM shutdown hook, if registered. */
@Nullable
privateThreadshutdownHook;
@ -580,6 +584,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -580,6 +584,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -643,6 +649,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -643,6 +649,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
}
}
finally{
this.startupShutdownThread=null;
this.startupShutdownLock.unlock();
}
}
@ -1022,13 +1029,16 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1022,13 +1029,16 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -1036,6 +1046,30 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1036,6 +1046,30 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -1045,23 +1079,31 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1045,23 +1079,31 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
*/
@Override
publicvoidclose(){
if(this.startupShutdownLock.tryLock()){
try{
doClose();
// If we registered a JVM shutdown hook, we don't need it anymore now: