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 :

Déterminer / détecter le contexte d'exécution d'une application


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut Déterminer / détecter le contexte d'exécution d'une application
    Bonjour à tous,
    Dans 2 applications, j'ai besoin de récupérer un fichier config.xml ; Ce fichier se situe au même niveau que l'archive war/jar.
    L'instance d'une classe se charge de la récupération de ce fichier dans les 2 contextes suivants :
    1. application déployée dans Tomcat ( /webapps/webAppli.war + config.xml ) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      String pathTomcat = System.getProperty("catalina.base");
      File cfg = new File(pathTomcat + "/webapps/config.xml");
    2. application accessible en ligne de commande ( ./monAppli.jar + config.xml ) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      String pathUser = System.getProperty("user.dir");
      File cfg = new File(pathUser + "/config.xml");

    Question : Quel est le test que je dois effectuer au niveau de la classe pour savoir si je suis dans le cas 1 ou le cas 2 ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    c'est à la fois une manière curieuse d'aller chercher un fichier de config et, dans le cas tomcat, un endroit curieux pour la stocker. Dans tous les cas, l'existance de catalina.base devrais te suffir à déterminer si tomcat est présent ou non.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Hello,
    Citation Envoyé par tchize_
    c'est à la fois une manière curieuse d'aller chercher un fichier de config
    Peut-être, mais si je le mets dans le jar/war, comment vais-je l'éditer et modifier l'adresse du serveur Mysql.
    dans le cas tomcat, un endroit curieux pour la stocker
    Mais alors où ?
    l'existance de catalina.base devrais te suffir à déterminer si tomcat est présent ou non.
    Celà signifie que si l'utilisateur du .jar a Tomcat présent sur son ordinateur, il doit arrêter Tomcat avant de lancer monAppli.jar ?
    Tout celà peu peu sembler un peu compliqué, mais je vise à avoir le même comportement aussi bien sur un poste de développement que lors des déploiements en test ou production ainsi que lors de l'intégration en masse dans la base de données.
    Alors tous les conseils sont les bienvenus.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par hapalemur Voir le message
    Peut-être, mais si je le mets dans le jar/war, comment vais-je l'éditer et modifier l'adresse du serveur Mysql.
    Pour les desktop, l'usage veux que la config se place dans le user.dir, dans un sous répertoire qui correspond à l'application

    Pour les webapp, normalement, on configure la base de données sous forme d'un datasource qu'on configure dans le conteneur. Au pire, si on veux gérer sois meme la connection, on met alors la config dans le répertoire WEB-INF/ ou WEB-INF/classes.

    Celà signifie que si l'utilisateur du .jar a Tomcat présent sur son ordinateur, il doit arrêter Tomcat avant de lancer monAppli.jar ?
    non, seule la JVM démarrée par les scripts de démarrage de tomcat possède un catalina.home. A moins bien sur que, sur le poste en question, quelqu'un aie eu l'idée saugrenue de créer une variable d'environnement globale catalina.home.

    je vise à avoir le même comportement aussi bien sur un poste de développement que lors des déploiements en test ou production ainsi que lors de l'intégration en masse dans la base de données.
    L'idée est bonne, la réalisation me semble mauvaise. Tu devrais avoir un jar qui correspond à ton "service", que tu peux utiliser au choix dans tomcat ou dans une application standalone, mais ce jar devrais nécessiter que l'application utilisatrice lui fournisse sa config. Ainsi tu aurais, coté tomcat, le jar dans WEB-INF/lib, plus un context listener ou autre chose qui initialise ton service en allant cherche la config dans WEB-INF/myconfigxml, et du coté application standalone, tu aurais le main qui ferais le meme genre de boulot en allant chercher dans le user.dir. Avec ce système t'as meme pas besoin de détecter l'environnement, c'est la manière d'initialiser le service qui changera.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Bjr,
    Merci pour la réponse.
    Pour faire simple et rapide, je vais tester l'existence de CATALINA_HOME et mettre le fichier config.xml à l'endroit adéquat. Ultérieurement, je vais me pencher sur le Datasource configuré dans le Container.
    Citation Envoyé par tchize_
    non, seule la JVM démarrée par les scripts de démarrage de tomcat possède un catalina.home. A moins bien sur que, sur le poste en question, quelqu'un aie eu l'idée saugrenue de créer une variable d'environnement globale catalina.home.
    Bien vu, après vérif sur mon PC, cette variable était bien globale : lors de l'installation de Linux sur mon poste, il y a un an, je n'avais rien trouvé de mieux que de la mettre au même niveau que $JAVA_HOME ( donc .... idée saugrenue ) et correction effectuée par un export CATALINA_HOME="/usr/java/tomcat" dans le script chargé du service Tomcat (start/stop/restart).

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/01/2008, 12h41
  2. exécution d'une application AWT sur linux
    Par hammag dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2006, 10h59
  3. Réponses: 3
    Dernier message: 19/07/2006, 21h54
  4. Exécution d'une application dans un formulaire
    Par julio02200 dans le forum Access
    Réponses: 1
    Dernier message: 13/06/2006, 14h37
  5. Comment faire un exécutable d'une application access
    Par b_steph_2 dans le forum Runtime
    Réponses: 4
    Dernier message: 09/02/2006, 16h21

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