@ -203,8 +205,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -203,8 +205,8 @@ 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
@ -576,7 +578,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -576,7 +578,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -624,6 +627,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -624,6 +627,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
logger.warn("Exception encountered during context initialization - "+
"cancelling refresh attempt: "+ex);
}
// Destroy already created singletons to avoid dangling resources.
destroyBeans();
@ -638,6 +642,9 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -638,6 +642,9 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
contextRefresh.end();
}
}
finally{
this.startupShutdownLock.unlock();
}
}
/**
@ -645,12 +652,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -645,12 +652,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -970,9 +973,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -970,9 +973,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
// Publish the final event.
publishEvent(newContextRefreshedEvent(this));
// Restore shutdown hook if registered before.
restoreShutdownHook();
}
/**
@ -1022,8 +1022,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1022,8 +1022,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -1031,28 +1036,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1031,28 +1036,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -1062,12 +1045,23 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1062,12 +1045,23 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
*/
@Override
publicvoidclose(){
synchronized(this.startupShutdownMonitor){
// If we registered a JVM shutdown hook, we don't need it anymore now:
// We're already explicitly closing the context.
removeShutdownHook();
doClose();
if(this.startupShutdownLock.tryLock()){
try{
doClose();
// If we registered a JVM shutdown hook, we don't need it anymore now: