[TOMCAT] Déclencher l'appel de la méthod init d'une servlet. [RESOLU]

Déclencher l'appel de la méthod init d'une servlet. [RESOLU] [TOMCAT] - Java - Programmation

Marsh Posté le 07-10-2003 à 14:31:03    

Bonjour à tous,
 
Il me semble que la méthode "init()" d'une servlet est appellé lors de l'instanciation de celle-ci, c'est a dire lors de la 1er requete HTTP vers le container qui la gere.
 
Il me semblait egalement que dans le fichier de proprietes "web.xml", on pouvait spécifier l'instanciation de certaines classes.
 
Je suis face à un "probleme": Lorsque je demarre un serveur TOMCAT(Apache Tomcat/4.0.6) (application COFAX), lors du demarrage et sans aucune requete HTTP,  la webapp initialise tout un tas de trucs depuis une method "init" de l'une de ses servlets.
 
Comment est-ce possible sans rien spécifier dans web.xml ?!
Je precise qu'il y a toutefois des "init-parameters" dans le web.xml mais il ne me semble pas que cela puisse declencher un init dans les servlets...
La méthode init ne devrait etre appelée que lors de l'instanciation de la servlet, c'est a dire lors du 1er appel HTTP.....


Message édité par bartleby le 07-10-2003 à 14:50:49
Reply

Marsh Posté le 07-10-2003 à 14:31:03   

Reply

Marsh Posté le 07-10-2003 à 14:35:39    

bartleby a écrit :

Bonjour à tous,
 
Il me semble que la méthode "init()" d'une servlet est appellé lors de l'instanciation de celle-ci, c'est a dire lors de la 1er requete HTTP vers le container qui la gere.
 
Il me semblait egalement que dans le fichier de proprietes "web.xml", on pouvait spécifier l'instanciation de certaines classes.
 
Je suis face à un "probleme": Lorsque je demarre un serveur TOMCAT(Apache Tomcat/4.0.6) (application COFAX), la webapp initialise tout un tas de trucs depuis une method "init" de l'une de ses servlets.
 
Comment est-ce possible sans rien spécifier dans web.xml ?!
La méthode init ne devrait etre appelée que lors de l'instanciation de la servlet, c'est a dire lors du 1er appel HTTP.....
 


 
Dans ton web.xml, tu déclares chaque servlet dans des balises <servlet>
Comme ceci :


    <servlet>
        <!-- Servlet principale : gère les connexions, changements d'application et de document courant -->
        <servlet-name>MaServlet</servlet-name>
        <servlet-class>com.maboite.ldsweb.MaServlet</servlet-class>
 
        <!-- Load this servlet at server startup time -->
        <load-on-startup>1</load-on-startup>
    </servlet>


 
Le 1 de <load-on-startup> veut dire que cette servlet est instanciée en premier au lancement du serveur (parmis les servlets de la web-app).
Essaye de jouer sur load-on-startup : soit mettre 0, soit ne pas l'préciser, j'sais pas trop...

Reply

Marsh Posté le 07-10-2003 à 14:44:26    

Il me semblait que le tag <load-on-startup>, n'influencait que pour l'ordre de lancement (en somme qu'il ne declenchait pas lui-meme un chargement au demarrage)....
 
OK, merci bcp ;)


Message édité par bartleby le 07-10-2003 à 14:53:49
Reply

Marsh Posté le 07-10-2003 à 14:51:28    

Bon, aprés avoir consulté les spécifications Servlet 1.3 ( c'est ce que j'aurai du commencer par faire), voici ce qui est écrite:
 
<!ELEMENT listener-class (#PCDATA)>
<!--
The load-on-startup element indicates that this servlet should be
loaded (instantiated and have its init() called) on the startup
of the web application. The optional contents of
these element must be an integer indicating the order in which
the servlet should be loaded. If the value is a negative integer,
or the element is not present, the container is free to load the
servlet whenever it chooses. If the value is a positive integer
or 0, the container must load and initialize the servlet as the
application is deployed. The container must guarantee that
DEPLOYMENT DESCRIPTOR
102
servlets marked with lower integers are loaded before servlets
marked with higher integers. The container may choose the order
of loading of servlets with the same load-on-start-up value.
Used in: servlet
-->
 
Donc, dès que le tag est présent, init est appelé (car la classe est instanciée), le nombre, s'il est present, precise un ordre...


Message édité par bartleby le 07-10-2003 à 14:52:19
Reply

Marsh Posté le 07-10-2003 à 14:51:42    

bartleby a écrit :

Il me semblait que le tag <load-on-startup>, n'influencait que pour l'ordre de lancement (en somme qu'il ne declanchait pas lui-meme un chargement au demarrage)....
 
OK, merci bcp ;)


 
De rien. T'as vérifié, c bien ça ? en n'le précisant pas ?

Reply

Marsh Posté le 07-10-2003 à 14:52:55    

Oui, j'ai edité jsute au dessus ;) merci encore!

Reply

Marsh Posté le 07-10-2003 à 14:54:40    

bartleby a écrit :

Bon, aprés avoir consulté les spécifications Servlet 1.3 ( c'est ce que j'aurai du commencer par faire), voici ce qui est écrite:
 
<!ELEMENT listener-class (#PCDATA)>
<!--
The load-on-startup element indicates that this servlet should be
loaded (instantiated and have its init() called) on the startup
of the web application. The optional contents of
these element must be an integer indicating the order in which
the servlet should be loaded. If the value is a negative integer,
or the element is not present, the container is free to load the
servlet whenever it chooses. If the value is a positive integer
or 0, the container must load and initialize the servlet as the
application is deployed. The container must guarantee that
DEPLOYMENT DESCRIPTOR
102
servlets marked with lower integers are loaded before servlets
marked with higher integers. The container may choose the order
of loading of servlets with the same load-on-start-up value.
Used in: servlet
-->
 
Donc, dès que le tag est présent, init est appelé (car la classe est instanciée), le nombre, s'il est present, precise un ordre...


 
Oui, et ...?
c quoi ton problème exactement ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed