Dies ist eine der Interviewfragen, mit denen ich vor ein paar Tagen konfrontiert wurde:
Ist es möglich, die Methode service()
von destroy()
?
Vielen Dank im Voraus.
destroy()
ist eine Lebenszyklus -Methode, die vom Servlet-Container beim Entladen einer bestimmten Instanz des Servlets aufgerufen wird. Entsprechend ruft der Container service()
auf, wenn ein Client das Servlet anfordert.
Können wir die
service()
Methode vondestroy()
Methode im Servlet aufrufen?
Kurze Antwort: Ja , da service()
eine Methode wie jede andere Methode ist.
Lange Antwort: Sie können, aber es macht keinen Sinn. service()
erfordert eine Anforderung und Antwortparameter, die normalerweise vom Container beim Aufruf des Servlets bereitgestellt werden. Wenn Sie service()
selbst aufrufen, wie werden Sie diese Parameter bereitstellen? Wozu? Wirst du null
auf beiden verwenden? Was nützt service()
für zwei leere Parameter?
Können wir die
destroy()
Methode vonservice()
Methode im Servlet aufrufen?
Ja , wiederum können Sie destroy()
innerhalb von service()
aufrufen, da es auch eine Methode wie jede andere Methode ist. Obwohl dies immer noch seltsam ist, könnte dies manchmal Sinn machen, da destroy()
die von Ihnen definierte Logik (Säuberung, Entfernen von Attributen, etc.) Ausführen wird.
WICHTIG: Denken Sie daran, dass das Aufrufen von destroy()
die Servlet-Instanz nicht entlädt . Sie verwalten nicht den Lebenszyklus von Servlets im Programm, der Servlet-Container tut das.
Zweck von destroy()
ist die Freigabe / Freigabe aller von der Servlet-Instanz verwendeten Ressourcen. Durch den Aufruf von destroy()
Container denegistrieren Servlet und seinen Dienst.
Ja, Sie können die service(request, response)
like anyohter-Methode von destroy()
aufrufen, aber sie wird nicht ausgeführt, daher ist es sinnlos, die Service-Methode von destroy()
aufzurufen, da diese Service-Methode nie aufgerufen wird / executed, request und response sind null, da diese Objekte nicht vom Container bereitgestellt werden.
Von Java-Dokument :
public void destroy ()
Wird vom Servlet-Container aufgerufen, um einem Servlet anzuzeigen, dass das Servlet außer Betrieb genommen wird. Diese Methode wird nur aufgerufen, nachdem alle Threads in der Service-Methode des Servlets beendet wurden oder nachdem eine Zeitüberschreitung aufgetreten ist.
Nachdem der Servlet-Container diese Methode aufgerufen hat, ruft er die Servicemethode für dieses Servlet nicht erneut auf.
Diese Methode gibt dem Servlet die Möglichkeit, alle gehaltenen Ressourcen zu bereinigen (z. B. Speicher, Dateihandles, Threads) und sicherzustellen, dass jeder persistente Zustand mit dem aktuellen Status des Servlets im Speicher synchronisiert wird.
>