Können wir die service () Methode von der destroy () Methode im Servlet aufrufen?

8

Dies ist eine der Interviewfragen, mit denen ich vor ein paar Tagen konfrontiert wurde:

Ist es möglich, die Methode service() von destroy() ?

aufzurufen

Vielen Dank im Voraus.

    
Java Developers Guide 25.05.2013, 02:29
quelle

2 Antworten

22

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 von destroy() 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 von service() 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.

    
acdcjunior 25.05.2013, 03:20
quelle
2

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.

%Vor%

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.

>     
Alpesh Gediya 25.05.2013 04:25
quelle