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 ?
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 ?
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..."
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.
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..."
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.
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.
Avec un petit script de déploiement, shell ou ant, ton client devrait pouvoir redéployer sans grand effort.
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.
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..."
Je suis obligé de passer par Ant ?
Je peux pas le faire directement avec Eclipse ?
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.
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
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).
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 :
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 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
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
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"); } }
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 ?
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!).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager