Peut-on appeler service() la méthode destroy() la méthode dans le Servlet?
C'est l'une des questions de l'entrevue, j'ai affronté il y a quelques jours:
Est-il possible d'appeler le service()
méthode de destroy()
?
Merci d'avance.
OriginalL'auteur Java Developers Guide | 2013-05-25
Vous devez vous connecter pour publier un commentaire.
destroy()
est un cycle de vie méthode appelée par le conteneur de Servlet lors du déchargement d'une instance spécifique de la Servlet. De même, la conteneur appelleraservice()
quand il y a un client qui demande le Servlet.Réponse courte: Oui, comme
service()
est une méthode comme une autre.Réponse longue: Vous pouvez, mais il ne fait pas de sens.
service()
exige une demande et une réponse des paramètres qui sont habituellement fournis par le conteneur lorsque la Servlet est appelé. Si vous appelezservice()
par vous-même, comment vas-tu fournir ces paramètres? Pour quoi? Tu vas utilisernull
sur les deux? À quoi bonservice()
pour les deux paramètres vides?Oui, encore une fois, vous pouvez appeler
destroy()
de l'intérieur de laservice()
que c'est également une méthode comme une autre. Bien que toujours étrange, ce qui pourrait faire sens parfois, commedestroy()
fera tout ce logique que vous avez défini (nettoyage, enlever des attributs, etc.).IMPORTANT: il suffit de garder à l'esprit que le fait de simplement appeler
destroy()
ne décharger instance de la Servlet. Vous n'avez pas à gérer le cycle de vie des Servlets dans le programme, le Conteneur de Servlet.Grande réponse - acdcjunior
OriginalL'auteur acdcjunior
But de
destroy()
est de allouées/libre toutes les ressources utilisées par l'instance de Servlet. En appelantdestroy()
conteneur désinscrire de servlet et de son service.Oui, vous pouvez appeler la
service(request, response)
comme anyohter méthode dedestroy()
mais il ne sera pas exécuté de sorte que son inutile de faire appel de la méthode du service dedestroy()
que ceux de la méthode du service ne sera jamais appelé/exécution, de demande et de réponse sera nulle que ces objets ne seront pas fournis par conteneur.De Java doc:
public void destroy()
Appelée par le conteneur de servlet pour indiquer à une servlet servlet est mis hors service. Cette méthode n'est appelée qu'une fois tous les fils à l'intérieur de la servlet de la méthode de service ont quitté ou après un délai d'expiration est passée.
Après le conteneur de servlet appelle cette méthode, il n'ira pas en appel de la méthode de service de nouveau sur cette servlet.
Cette méthode donne de la servlet l'occasion de nettoyer toutes les ressources qui sont en cours (par exemple, la mémoire, les descripteurs de fichiers, threads) et assurez-vous que tout état persistant est synchronisé avec le servlet de l'état actuel dans la mémoire.
OriginalL'auteur Alpesh Gediya