Registrieren Sie shutDownHook in der Webanwendung
Wie können wir registerShutdown Haken in der web-Anwendung?
Ist es whays, um es zu registrieren, die in web.xml oder in applicationContext.xml?
Ich weiß, dass, wenn wir über die Anwendung mit main-Klasse ist es einfach.
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
context.registerShutdownHook();
Aber was ist mit der web-Anwendung? Als es nutzt ContextListener
InformationsquelleAutor der Frage slisnychyi | 2014-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
registerShutdownHook() in eigenständigen (nicht-web -) Anwendung:
Den
@PreDestroy
annotation verwendet wird, auf die bean-Methode, um benachrichtigt zu werden, wenn die bean entfernt wird aus dem Kontext oder, wenn der Kontext wird heruntergefahren.Shut-down-Ereignis wird ausgelöst, wenn
context.close()
odercontext.registerShutdownHook()
aufgerufen.Ich hoffe, Sie wissen das bereits.
registerShutdownHook() in der web application:
In eine web-Anwendung, DispatcherServlet/ContextListener erstellt die Datei ApplicationContext und es wird in der Nähe der Kontext, wenn Sie den server Herunterfahren. Sie nicht müssen explizit aufgerufen
context.close()
odercontext.registerShutdownHook()
.Wenn Sie den server Herunterfahren,
@PreDestory
Methoden der bean werden automatisch benachrichtigt.InformationsquelleAutor der Antwort Kalyan
In web-Anwendungen, die Sie verwenden können, eine
ServletContextListener
die feuert, wenn die Anwendung bereitgestellt wird und noch nicht eingesetzt wurde:Können Sie den Zugriff auf Spring-beans durch das abrufen der aktuellen Frühjahr Kontext:
InformationsquelleAutor der Antwort Luiggi Mendoza
Mit Spring 3+, können Sie einen ContextCleanupListener auf den Anwendungskontext.
Registrieren der listener beim Start so (Sie könnten es vorziehen, die Verwendung von xml-config, aber das gleiche gilt)
Umsetzung von ContextCleanupListener, läuft das shutdown-code:
Beim ausführen von bis zu sagen tomcat zum Beispiel, und drücken Sie STRG + C, um es herunterzufahren, werden Sie sofort sehen, die contextDestroyed Methode werden Treffer in den debugger, wenn Sie setzen es einen Haltepunkt.
InformationsquelleAutor der Antwort John Deverall
@Luiggi Mendoza Antwort ist, begann zu arbeiten, wenn ich hinzufügen, Eintrag in web.xml.
sehen Sie die stack-trace der Initialisierung/Benachrichtigung der listener-Objekt von der tomcat, die viel vor dem Frühjahr tut.
Aber wichtig ist @PreDestroy genannten ersten bis zum Frühjahr, dann nach contextDestroyed aufgerufen und wieder @PreDestroy genannt, die von non-spring-thread.
Also, wenn Sie wollen, um irgendeine Arbeit, auf daß die Zeit, wenn Sie wollen, um sicherzustellen, dass andere Ressourcen-thread vorhanden sind, dann halten diese @PreDestroy.
Weiß nur, dass der unten ist noch eine Weise des Erhaltens der @postConstruct Haken innerhalb der Klasse.
Eine weitere Sache ist @PreDestroy ist nur für singleton-Objekte nicht verfügbar für Prototyp-Objekte.
InformationsquelleAutor der Antwort Kanagavelu Sugumar