IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Ajouter un répertoire de classes


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut Ajouter un répertoire de classes
    Bonjour à tous,

    J'aurais aimer savoir s'il était possible de définir un répertoire de classes pour un contexte.

    Concrétement, la configuration par défaut de tomcat permet de récupérer les classes définit dans :

    1- {catalina_home}/common/classes
    2- {catalina_home}/shared/classes
    3- {mon_appli}/WEB-INF/classes

    Je voudrais ajouter à ces répertoires un autre répertoire contenant des classes (par exemple /home/user1/classes).

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Classpath ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut
    Merci de ta réponse

    Mais ca ne marche pas J'ai essayé de voir avec l'argument Loader dans le fichier server.xml... En vain, ca ne donne rien. Je pense que cela ne doit pas être possible.

    Je vais essayer de modifier le fichier catalina.sh pour voir, il doit surement y avoir un endroit où il définit les dossiers à ajouter. Cette solution ne me convient pas vraiment car je voulais que cela se fasse de manière dinamique (sans avoir à redémarrer Tomcat) mais bon, on fait avec ce qu'on a ^^

    J'essaye et je reposte

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut
    Alors rectification... Effectivement d'ajouter le répertoire dans le classpath de Tomcat fonctionne (désolé).

    Par contre maintenant, j'ai un nouveau problème. Si je modifie un fichier classe, celui-ci n'est pas mis à jour. Par exemple, si j'ajoute une fonction, il faut redémarrer Tomcat pour que celle-ci soit pris en compte.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    J'ai souvent moi même ce problème et je ne suis jamais parvenu à le résoudre. Désolé.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut
    J'ai vu qu'avec un ClassLoader on peut faire ce genre d'opération.

    http://www-igm.univ-mlv.fr/~dr/XPOSE...php?rub=5&id=9

    et il est spécifié :

    checkInterval :
    Durée, en secondes, entre deux recherches de ressources modifiées dans le webapp. Cet attribut n'est utile que si reloadable est paramétré à true. La durée par défaut est 15 secondes.
    Plus exactment, la fonction WebappClassLoader.loadClass (définit dans loaderClass) est appelée tous les intervalle de temps spécifié. Il suffit donc, théoriquement, de surcharger la classe WebappClassLoader pour qu'elle charge d'autres dossiers que WEB-INF/classes.

    Seulement j'ai un soucis.... Quand j'ajoute l'attribut Loader, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    29 juin 2007 09:40:50 org.apache.catalina.core.ApplicationContext log
    INFO: La servlet jsp est marqué comme indisponible
    29 juin 2007 09:40:50 org.apache.catalina.core.ApplicationContext log
    GRAVE: Error loading WebappClassLoader
      delegate: false
      repositories:
        /WEB-INF/classes/
    ----------> Parent Classloader:
    sun.misc.Launcher$AppClassLoader@a39137
     org.apache.jasper.servlet.JspServlet
    java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034)
    	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
    	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    	at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
    	at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
    	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
    29 juin 2007 09:40:50 org.apache.catalina.core.StandardContext loadOnStartup
    GRAVE: La servlet /assurpeople a généré une exception "load()"
    java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
    	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034)
    	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
    	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    	at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
    	at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
    	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
    Je ne vois pas à quoi c'est du -_-

  7. #7
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.

    Le comportement par défaut de Tomcat est logique et adapté à un environnement de production.

    Par contre, lors du développement et des tests, il est parfaitement possible d'indiquer à Tomcat de surveiller des ressources particulières pour qu'il recherge le contexte si elles changent.

    Pour ce faire, on crée un fichier context.xml dans META-INF (au même niveau que WEB-INF) qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Context reloadable="true">
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        :
        :
    </Context>
    Il suffit de mettre la liste des fichiers à surveiller.

    Bonne chance.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut
    Merci c'est exactement ce que je cherchais

    Sauf que je voudrais savoir si ca marche pour n'importe quel répertoire dans une machine. Si on peut faire par exemple :

    <Context reloadable="true">
    <WatchedResource>WEB-INF/classes/*</WatchedResource>
    <WatchedResource>/home/nicolas/classes/*</WatchedResource>
    </Context>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment ajouter des méthodes à une classe lors Runtime?
    Par revever dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/03/2008, 13h53
  2. Comment ajouter un répertoire en tant que projet ?
    Par bucheron007 dans le forum Eclipse PHP
    Réponses: 4
    Dernier message: 15/12/2007, 18h35
  3. [DOM] Ajouter un event à une class
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 30/04/2007, 11h19
  4. Réponses: 10
    Dernier message: 20/09/2006, 17h04
  5. [JAR]ajouter un répertoire au .jar
    Par menuge dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 13/12/2005, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo