dans Serveur, Tomcat

Le classpath tomcat

Aujourd’hui je vous propose un petit tour d’horizon sur le fonctionnement du classpath tomcat.

C’est quoi un classpath?

Il s’agit d’un argument de la jvm qui qui indique à cette dernière ou charger les classes  dont le programme aura besoin pour fonctionner.

Tout d’abord rappelons que Tomcat ne résoud pas le classpath comme les autres programmes java, cela veut dire que tomcat a une manière bien spécifique de charger ses classes.

Plutôt que d’utiliser la variable d’environnement CLASSPATH communément utilisée .

Le script de démarrage Tomcat  ignore cette variable et génère son propre classpath au moment de la creation du system classloader : (org.apache.catalina.loader.WebappClassLoader).

 

La variable CLASSPATH est une des façons d’instruire des applications ainsi que les outils du JDK ou rechercher les classes utilisateurs.

Classpath Tomcat vue d’ensemble

Voici un petit récapitulatif de la manière dont  le classpath Tomcat est résolu :

Lorsque Tomcat démarre il crée un certain nombre de classloader que nous détaillerons plus ci-dessous.

Attention a ne pas confondre classloader et classpath.

Classloader : Classe java dont le but est de charger des classes

Classpath: Chemin indiquant a partir de ou le ou les classloader doivent charger leur classes.

Les différents classloader de Tomcat

1 Bootstrap classloader:

Ce classloader charges les classes basques de la jvm ex : rt.jar ainsi que toutes les classes présentes dans JAVA_HOME/jre/lib/ext

Notez ici que ce classloader utilise la variable d’environnement JAVA_HOME et qu’il ne peut êtres instancié depuis un code java , il est implémenté nativement dans la jvm.

2 System classloader :

Ce classloader est normalement initialisé à partir de la variable CLASSPATH cependant le script de démarrage de Tomcat ignore cette variable et construit ce classloader à partir des répertoires suivants:

  • CATALINA_HOME/bin/bootstrap.jar (contient la méthode main qui permet de démarrer le serveur tomcat)
  • CATALINA_BASE/bin/tomcat-juli.jar or $CATALINA_HOME/bin/tomcat juli.jar (Les classes liées au logging tomcat)
  • CATALINA_HOME/bin/commons-daemon.jar (contient les classes pour le projet apache common deamon)

3 Common classloader

Ce classloader contient des classes à la fois visibles pour toutes les webapps et les classes internes à tomcat. Le chemin de recherche utilisé par ce classloader est spécifié par la variable de propriété common.loader située dans le fichier CATALINA_BASE/conf/catalina.properties. La configuration par défaut recherchera dans les chemins suivants dans l’ordre:

  •  classes et resources non archivées dans $CATALINA_BASE/lib
  • Archives JAR dans $CATALINA_BASE/lib
  • classes et resources non archivées dans $CATALINA_HOME/lib
  • Archives JAR dans $CATALINA_HOME/lib

4 Un classloader par application

Un classloader est crée pour chaque webapp déployée dans  une instance de serveur tomcat.Toutes les classes et ressources non archivées seront recherchées à partir du répertoire WEB-INF/classes et toutes les archives jar à partir du répertoire WEB-INF/lib. les classes et ressources chargées ne sont visibles qu’au sein de l’application WEB.

https://www.mulesoft.com/tcat/tomcat-classpath

https://docs.oracle.com/javase/tutorial/essential/environment/paths.html

Ecrire un Commentaire

Commenter

Webmentions

  • sildenafil tablet 50 mg

    […] viagra sildenafil 25mg […]

  • best generic cialis

    […] amazon viagra 100mg […]

  • liquid cialis

    […] order cialis online […]

  • sildenafil 25 mg amazon

    […] buy viagra 100 mg online […]

  • lilly cialis coupon

    […] cialis official website […]

  • buy generic cialis

    […] buy cialis 5 mg online […]

  • nejnižší cena 100 gr kamagra

    kamagra v kanadské farmacii

    nejlevnější náhrada kamagra

  • buy rifaximin buy generic

    how to order rifaximin usa overnight delivery

    purchase rifaximin cheap next day delivery

  • how to order xifaxan toronto canada

    how to order xifaxan generic when available

    discount xifaxan cost at walmart

  • get avodart purchase online from india

    cheap avodart canada

    cheapest buy avodart australia purchase

  • comprar staxyn sin receta

    buy cheap staxyn generic ireland

    buy cheap staxyn cheap europe

  • buying itraconazole uk sales

    buy itraconazole price in canada

    buy itraconazole generic online pharmacy

  • purchase fildena generic germany

    cheap fildena generic ingredients

    purchase fildena generic switzerland

  • order gabapentin cheap buy online no prescription

    cheap gabapentin buy sydney

    get gabapentin generic canada no prescription

  • discount dutasteride generic equivalent buy

    buy dutasteride purchase to canada

    generic dutasteride sildenafil canadian co no prescription

  • buying flexeril cyclobenzaprine uk generic

    how to buy flexeril cyclobenzaprine new york city

    cvs flexeril cyclobenzaprine prices

  • cheapest buy androxal cost without insurance

    how to order androxal generic in united states

    Cheap androxal for sale online no perscription required

  • enclomiphene no prescription next day delivery

    purchase enclomiphene generic enclomiphenes

    order enclomiphene generic drug india

  • kamagra pas cher pas de rx requis canada

    kamagra en ligne pas de rx

    kamagra ordonnances en ligne sans abonnement

  • ginseng and erectile function

    […] ginseng for muscle growth in men […]

  • 50 mg sildenafil price

    […] 50 mg viagra […]

  • online cialis

    […] how can i get cialis […]

  • buy cialis 40mg

    […] cialis prices […]

  • viagra sildenafil 25 mg

    […] generic viagra blue pill 100 […]

  • buying clomid online

    […] clomid 50 mg […]

  • rybelsus for sale

    […] rybelsus discount […]