J'ai édité le fichier "server.xml" dans le dossier conf
de tomcat 8. J'ai ajouté une nouvelle balise Host
pour un nouveau site Web.
Dois-je redémarrer le serveur Tomcat?
Puis-je obtenir Tomcat pour analyser et appliquer le nouvellement modifié server.xml
?
Je commencerais par dire que la question n'est pas complètement faite correctement, car il est tout à fait possible de modifier le fichier sans redémarrer Tomcat, mais les modifications sont ignorées par le processus d'exécution.
La vraie question serait de savoir comment appliquer des changements dans server.xml
Sans redémarrer Tomcat.
Rassembler des informations à partir du processus de démarrage et les pages chargeur de classe sur la documentation en ligne de Tomcat, il est possible de comprendre cela plus en détail.
Plus spécifiquement, il est décrit dans ServerStartututututututututup.txt et le diagramme UML du processus de démarrage et les portions pertinentes peuvent être résumées comme suit:
Sequence 1. Start from Command Line ... Sequence 2. Process command line argument (start, startd, stop, stopd) Class: org.Apache.catalina.startup.Bootstrap (assume command->start) What it does: a) Catalina.setAwait(true); b) Catalina.load() b3) createStartDigester() Configures a digester for the main server.xml elements b4) Load the server.xml and parse it using the digester Parsing the server.xml using the digester is an automatic XML-object mapping tool, that will create the objects defined in server.xml Startup of the actual container has not started yet. b6) Calls initialize on all components, this makes each object register itself with the JMX agent.
Cela se produit après la création du Bootstrap Classloader du moteur de servlet (Catalina).
Avec cette information, il est clair maintenant quand dans le processus de démarrage, le server.xml
Le fichier est analysé, mais cela ne répond pas vraiment à la question de savoir pourquoi il est nécessaire de redémarrer Tomcat pour appliquer des modifications à ce fichier.
La réponse est que Certains , une partie peut être modifiée de manière dynamique à l'exécution tilisation de JMX . Pour que cela soit possible, le MBean approprié a dû être enregistré (étape B6 ci-dessus), et doit également accepter les opérations définies (certaines MBEAN ne disposent que d'une interface GET).
Dans votre cas particulier, il n'ya aucun moyen de créer et d'enregistrer un nouvel hôte au moment de l'exécution, car il n'y a aucune disposition pour cela, et c'est la raison pour laquelle vous devez redémarrer le processus Tomcat pour avoir le Bootstrap = Classloader Instaniez cet objet et enregistrez-le avec l'agent JMX.
Ensuite, il est possible de modifier cet hôte d'un client JMX tel que le jconsole
qui est livré avec n'importe quel JDK.
Connectez-vous jconsole
à un JMX activé TOMCAT et parcourez l'hôte Mbean de vérifier tous les attributs disponibles:
et vérifiez toutes les opérations disponibles (l'une d'entre elles indiquée ci-dessous à titre d'exemple):
La page DOC Tomcat pour - <Context>
mention:
... Le fichier Conf/Server.xml principal ne peut pas être rechargé sans redémarrer Tomcat.