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 :

Chargement des classes et appel au démarrage de Tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Points : 85
    Points
    85
    Par défaut Chargement des classes et appel au démarrage de Tomcat
    Bonjour,

    une question, je suis entrain de ragarder le web.xml, la question est, est il possible de forcer tomcat à appeler une classe donnée à son démarrage pour charegemnt des données... tout en précisant ça dans le web.xml ?

    Ou faut il le faire dans le script de démarrage explicitement ?


    Merci

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Si tu configures dans web.xml, la classe sera appelée au chargement de l'application.

    Pour ce faire, tu peux faire une classe qui implémente javax.servlet.ServletContextListener et la déclarer dans un élément <listener> du web.xml.

    Autre solution, tu peux faire une servlet et la déclarer avec un <load-on-startup>.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Le plus simple c'est la 2e solution à mon avis.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Points : 85
    Points
    85
    Par défaut Appel classe & main ...
    Par exemple dans mon fichier web.xml j'ai une partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <!-- ServletContextListener to init and clean up CDA -->
      <listener>
        <listener-class>com.lhs.ccb.cfw.sgu.CDAInitializer</listener-class>
      </listener>
     
      <!-- DomainLayer initializer 
      <listener>
        <listener-class>com.lhs.ccb.cfw.domainlayer.DLInitializer</listener-class>
      </listener>
      -->
    Cela suppose que ces classes ont des main et sont appelés directement comme ça ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on a jamais parlé de main, ce sont des classes qui implémentent javax.servlet.ServletContextListener, ce sont els méthodes de cette interface qui seront appelées dessus.

    DevServlet: la deuxième solution est plus complexe et n'est pas fiable. C'est un peu le listener du pauvre

    -> Tu n'a pas de garantie que la servlet ne sera pas déchargée par le conteneur. Bien que je n'en connaisse aucun qui le fasse, les specs mentionnent qu'un conteneur peu décharger une servlet si il n'en a pas besoin, et la recharger lorsqu'il en aura besoin. Ce qui amènerais plusieurs déclenchement de ton code
    -> tu va encombre plus de ressources et prendre plus de temps (initialisaiton, passage de la config, ...) qu'avec un simple listener.

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -> Tu n'a pas de garantie que la servlet ne sera pas déchargée par le conteneur. Bien que je n'en connaisse aucun qui le fasse, les specs mentionnent qu'un conteneur peu décharger une servlet si il n'en a pas besoin, et la recharger lorsqu'il en aura besoin. Ce qui amènerais plusieurs déclenchement de ton code
    Tchize je suis d'accord avec ta remarque, mais remonte un peu à la problèmatique posée, il cherchait un moyen de charger certaines données au démarrage de son appli, je ne pense que la survie de la servlet lui importe après chargement fait... mais bon c'est peut être du détail, Lolita a plusieurs choix désormais.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Points : 85
    Points
    85
    Par défaut Tests
    Ok merci je vois je vais tester

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Tchize je suis d'accord avec ta remarque, mais remonte un peu à la problèmatique posée, il cherchait un moyen de charger certaines données au démarrage de son appli, je ne pense que la survie de la servlet lui importe après chargement fait... mais bon c'est peut être du détail, Lolita a plusieurs choix désormais.
    Le problème est justement l'effet de bord si elle se rechargent uen deuxième fois Mais bon, comme tu dit, les réponses on été données

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

Discussions similaires

  1. Auto-chargement des classes
    Par corv0 dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2014, 11h07
  2. Erreur lors du chargement des class formulaire
    Par erehcab dans le forum Autres composants
    Réponses: 1
    Dernier message: 07/09/2010, 20h09
  3. Réponses: 2
    Dernier message: 22/07/2009, 21h28
  4. [weblogic 6][ejb]Ordre de chargement des classes
    Par Tistou07 dans le forum Weblogic
    Réponses: 1
    Dernier message: 14/02/2007, 10h14

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