181 votes

Que signifie la valeur 0 (zéro) de la servlet <load-on-startup> ?

Je m'y perds un peu. Dans notre application, nous avons défini quelques servlets. Voici l'extrait de la web.xml pour l'une des servlets :

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>com.cisco.framework.axis2.http.FrameworkServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet> 

D'après ce que j'ai compris, la valeur de la <load-on-startup> doit être un nombre entier positif pour qu'il soit chargé automatiquement. J'ai cherché sur google mais les réponses que j'ai trouvées n'ont fait qu'ajouter à ma confusion.

1voto

Rohit Points 11
  1. Si la valeur est la même pour deux servlets, elles seront chargées dans l'ordre dans lequel elles ont été déclarées dans le fichier web.xml.
  2. si elle est égale à 0 ou à un nombre entier négatif, la servlet sera chargée lorsque le conteneur aura envie de la charger.
  3. garantit le chargement, l'initialisation et l'appel à la méthode init() de la servlet par le conteneur web.
  4. S'il n'y a pas d'élément pour une servlet, elle sera chargée lorsque le conteneur web décidera de la charger.

0voto

Bharat Patel Points 11

Oui, il peut avoir la même valeur.... la raison pour laquelle on donne des nombres à load-on-startup est de définir une séquence pour que le serveur charge tous les servlets. le servlet avec la valeur 0 load-on-startup sera chargé en premier et le servlet avec la valeur 1 sera chargé après cela.

si deux servlets ont la même valeur pour load-on-startup, elles seront chargées de la manière dont elles sont déclarées dans le web.xml, de haut en bas. la servlet qui vient en premier dans le web.xml sera chargée en premier et l'autre sera chargée ensuite.

0voto

anil paritala Points 11

--> (Absence de balise load-on-start-up) Tout d'abord, quand une servlet est déployée sur le serveur, il est de la responsabilité du serveur de créer l'objet servlet. Par exemple, si une servlet est déployée sur le serveur (l'objet servlet n'est pas disponible sur le serveur), le client envoie une requête à la servlet pour la première fois, le serveur crée l'objet servlet à l'aide du constructeur par défaut. et appelle immédiatement init() . Dès lors, lorsque le client envoie une requête, seule la méthode de service est exécutée car l'objet est déjà disponible.

Si la balise load-on-start-up est utilisée dans le descripteur de déploiement : Au moment du déploiement lui-même, le serveur crée l'objet servlet pour les servlets en fonction de la valeur positive fournie entre les balises. La création d'objets pour les classes de servlets se fera de 0 à 128. La servlet 0 sera créée en premier, suivie des autres numéros.

Si nous fournissons la même valeur pour deux servlets dans le web.xml alors la création d'objets se fera en fonction de la position des classes dans le web.xml qui varie également d'un serveur à l'autre.

Si nous fournissons une valeur négative entre la balise load on start up, le serveur ne créera pas l'objet servlet.

Autres Scénarios où le serveur crée l'objet pour la servlet.

Si nous n'utilisons pas la balise load on start up dans le web.xml, alors le projet est déployé lorsque le client envoie la requête pour la première fois, le serveur crée l'objet et le serveur est responsable de l'appel de ses méthodes de cycle de vie. Ensuite, si une classe a été modifiée dans le serveur (tomcat). Le client envoie à nouveau la requête pour la servlet modifiée mais dans le cas de tomcat, le nouvel objet ne sera pas créé et le serveur utilisera l'objet existant à moins que le serveur ne soit redémarré. Mais dans la classe de web-logic, quand un fichier .class est modifié dans le serveur sans redémarrer le serveur, s'il reçoit une demande, le serveur appelle la méthode destroy sur la servlet existante et crée un nouvel objet servlet et appelle init() pour son initialisation.

-1voto

Nalini Points 11

Si la valeur est <0, la serlet est instanciée à l'arrivée de la requête, sinon >=0 le conteneur sera chargé dans l'ordre croissant des valeurs. Si 2 ou plusieurs servlets ont la même valeur, alors l'ordre des servlets déclarés dans le web.xml.

-2voto

Le conteneur de servlets charge la servlet au démarrage ou lors de la première demande. Le chargement de la servlet dépend de l'attribut "load-on-startup" du fichier "web.xml". Si l'attribut a un nombre entier positif (0 à 128), la servlet est chargée avec le chargement du conteneur, sinon elle est chargée lorsque la première demande est faite.

Lorsque la servlet est chargée une fois qu'elle a reçu la demande, elle est appelée "chargement paresseux".

Remarque : 0 est également un nombre entier positif.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X