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 :

Librairies externes Tomcat6


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut Librairies externes Tomcat6
    Bonjour,

    Je voudrais savoir s'il est possible d'avoir plusieurs dossiers de lib au sein du même serveur Tomcat 6.
    En gros, je voudrais que Tomcat aille dans le bon dossier lib en fonction de l'application qui tourne. Quelqu'un sait ?

  2. #2
    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
    Normalement quand tomcat ne trouve pas la librairie dans son sharedlib selon la webapp en cours il va la chercher dans WEB-INF\lib de l'appli.
    Tu veux changer ce schema ???
    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..."

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Admettons que j'ai 2 applications web sur mon serveur Tomcat :

    WebApp1 qui a ses librairies dans commun/lib_WebApp1
    WebApp2 qui a ses librairies dans commun/lib_WebApp2

    L'objectif c'est donc de créer des dossiers de lib par application afin que chaque application pointe vers son propre dossier de lib.

  4. #4
    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
    Relis la doc sur les deploiements d'appli web J2EE, le dossier WEB-INF\lib est conçu pour loger les librairies spécifiques à chaque contexte. Quand tomcat ou Jonas (etc...) ne trouve pas une librairie dans son repertoire de lib commun à toutes les applis il va la chercher dans le WEB-INFlib de la webapp en cours.
    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..."

  5. #5
    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 veux des librairies spécifiques pour tes applications, le répertoire WEB-INF/lib dans l'application est fait pour ça. Le lib de Tomcat est commun à Tomcat et à toutes les applications déployées.
    J'ajouterais qu'en cas de conflit, si une même librairie est à la fois dans lib et WEB-INF/lib, c'est la version spécifique à l'application qui est prioritaire (donc WEB-INF/lib).

    Avec ça, tu devrais t'en sortir sans casser la structure de répertoires de Tomcat.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Oui je sais mais je veux éviter de mettre mes lib dans WEB-INF/lib car dès que je veux faire une mise à jour, je suis obligé d'envoyer toutes les lib avec l'application et par conséquent, la taille est relativement volumineuse. Le but est donc de laisser toutes les lib chez le client dans un dossier quelconque afin d'alléger les mises à jour.
    Je ne lui envoie que le code source sans les lib.

  7. #7
    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
    Avec un petit script de déploiement, shell ou ant, ton client devrait pouvoir redéployer sans grand effort.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    D'accord ok. Par contre lorsque je veux faire mes mises à jour, J'exporte mon projet eclipse en war mais il m'inclu toutes mes lib dedant. Y a t-il un moyen de les exclure du war ?
    Comme ça je n'envoie que mon code source et je laisse les lib dans le WEB-INF/lib du client.

  9. #9
    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
    Si tu deploies avec ANT , dans la tache tu px faire un "exclude" pour que ANT n'exporte plus tes lib
    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..."

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Je suis obligé de passer par Ant ?
    Je peux pas le faire directement avec Eclipse ?

  11. #11
    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
    Dans Eclipse, il faut que tu sortes tes jars du WEB-INF/lib et que tu les déclares dans le build path.

    Ceci dit, si ton client doit utiliser ant, tu devrais aussi l'utiliser... Question de cohérence.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    J'ai déjà essayé cette méthode mais ça ne marche qu'à moitié.
    En fait j'ai par exemple toutes mes lib dans un dossier dans C:\lib et lorsque je me crée une librairie utilisateur sous eclipse, je sélectionne tout le contenu cd C:\lib ça marche je peux utiliser ces librairies dans mon code java. Mais au moment de la compilation, Tomcat me retourne une erreur comme quoi il ne voit pas les classes que j'utilise dans mes lib (j'ai également un petit logo triangulaire jaune avec un point d'exclamation dedant qui apparaît sur le logo de mon projet). Par contre, si je mets mes lib dans WEB-INF/lib et que je rajoute une "WebApp Librairies" ça marche nickel et je n'ai plus le logo d'avertissement jaune.

    De plus, j'ai un problème supplémentaire (eh oui encore un, à croire que je les collectionne ) C'est que je n'arrive pas à déployer mon application sur mon serveur Tomcat 6 en local. Que je passe par l'interface manager, ou que je dépose mon .war directement ds WebApp, cela ne fonctionne pas. En fait, l'application se déploie bien (je veux dire que Tomcat extrait le contenu de mon .war pour créer un dossier avec tout ce qu'il faut dedant) mais en faisant http://localhost:8080/monapplication il me dit que l'application n'est pas disponible (Etat HTTP 503). De plus, Tomcat ne la voit pas dans manager.

    Je ne comprend plus rien

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Pas d'idées pour me dépanner ?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 64
    Points : 78
    Points
    78
    Par défaut
    Amène tes logs. Vérifie qu'aucune erreur n'est liée au déploiement de la webapp.

    Sinon pour réduire la taille, tu peux utiliser la compression ZIP sur le rar. Sinon je ne saurais que trop te conseiller netbeans si tu déploie sur du tomcat, l'interface est bien pratique, et permet de spécifier les options de chemin, de compression de war, de context... directement depuis les propriétés du projet (même pas besoin d'être un pro du ANT).

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    En fait je ne pense pas que le problème vienne de Tomcat mais plutôt de mon projet Eclipse. Mon projet est composé d'une classe et d'une servlet qui se situent dans un package "Classes", d'un fichier index.jsp, et de quelques librairies dans WEB-IF/lib de mon projet. Sous Eclipse le projet tourne avec une instance du serveur Tomcat il n'y a aucun problème.
    Je fais ensuite click droit sur le projet => exporter => WAR file. Je le mets dans Tomcat/WebApp. Je lance le serveur, le projet est bien déployé et j'obtiens le message d'erreur que j'ai cité précédemment.

    J'ai refais un test avec une application toute bête : un seul fichier index.jsp sous eclipse et cela fonctionne très bien sous Tomcat. Je ne comprends pas du tout ce qui ne va pas dans mon projet.

    [Mise à jour] J'ai réduit mon application pour faire des tests. J'ai donc supprimer ma classe et mes librairies (Il ne me reste plus que mon index.jsp ainsi que ma servlet).

    Je viens de regarder mes logs et j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    12 févr. 2009 11:17:14 org.apache.catalina.startup.HostConfig deployWAR
    INFO: Déploiement de l'archive test.war de l'application web
    12 févr. 2009 11:17:14 org.apache.tomcat.util.modeler.Registry registerComponent
    GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/test,J2EEApplication=none,J2EEServer=none
    12 févr. 2009 11:17:14 org.apache.catalina.startup.HostConfig deployWAR
    GRAVE: Erreur lors du déploiement de l'archive test.war de l'application web
    java.lang.UnsupportedClassVersionError: Bad version number in .class file
    Dans le code java de ma servlet j'ai :

    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
    package Classes;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class MaServlet extends HttpServlet {
     
    	private static final long serialVersionUID = -1248327778215429040L;
     
    	public MaServlet() {
            super();        
        }
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		System.out.println("OK");		
    	}
    }
    Je tiens tout de même à préciser que si j'enlève ce numéro ou que je laisse celui que eclipse me génère par défaut ça ne change malheureusement rien

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Points : 45
    Points
    45
    Par défaut
    Bon Je viens de résoudre CE problème.
    Il s'agissait bêtement d'un problème de version.

    [avant]
    JDK 1.6
    JRE 1.6
    Tomcat 6

    [maintenant]
    JDK 1.5
    JRE 1.6
    Tomcat 6

    Mais je me pose toujours la question pour les librairies externes...

    [Mise à jour] Mon problème était le suivant :
    Je souhaite (via éclipse et Tomcat 6) utiliser des libraries sans les mettre dans les dossiers lib qui sont prévus par défaut.
    => Sous Eclipse j'ai essayé de faire sur le projet, un clic droit dans le package explorer, puis build path, configure build path, add external JARS, sélectionné les jars correspondants aux classes à importer. Dans le code ça marche mais pas à la compilation.
    => Sous Tomcat 6 je n'ai pas trouvé d'autre moyen que de les mettre dans les dossiers lib prévus à cet effet.

    Quelqu'un peut-il m'aider ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 64
    Points : 78
    Points
    78
    Par défaut
    Extrait ton .war généré (c'est tout simplement un fichier tar+zip), et vérifie qu'Eclipse a bien integré les libs externes dans ta webapp.

    Le uid de la classe est propre à eclipse, ne fait pas partie de la spec Servlet 2.x.

    Sinon, effectivement, il faut que ton serveur tourne avec un jdk compatible avec les fonctions que tu utilises (bien vu sur ce coup, ça nous arrive tous un jour ou l'autre quand on bosse sur plusieurs postes!).

Discussions similaires

  1. [jar] inclure des librairie externe
    Par Grummfy dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 13/12/2005, 13h41
  2. Ajouter des librairies externes pour la compilation en C++
    Par Roming22 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2005, 10h15
  3. [JAR] Archive qui ne prend pas en compte librairie externe
    Par Shiryu44 dans le forum Général Java
    Réponses: 3
    Dernier message: 22/04/2005, 13h59
  4. [Debutant] Ajout de librairie externe
    Par hat54 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2004, 17h15
  5. Creer et utiliser une librairie externe à l'exécutable
    Par multani dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 06/11/2003, 10h11

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