La servlet XXX est actuellement indisponible [Tomcat] - Java - Programmation
Marsh Posté le 13-10-2006 à 10:20:24
vérifies dans les logs de démarrage. elle doit avoir un problème lors de son initialisation j'imagine ...
Marsh Posté le 13-10-2006 à 10:23:32
Je sais pas si ça peut t'aider...
Spoiler : Tu utilises bien des servlets éponge ? |
Marsh Posté le 13-10-2006 à 11:28:44
benou a écrit : vérifies dans les logs de démarrage. elle doit avoir un problème lors de son initialisation j'imagine ... |
Oui effectivement, après avoir supprimé les logs, arrété et redemarré le serveur, j'ai des erreurs dans les logs (que je n'avais pas vu avant ???) et ces erreurs touchent à des fonctions de gestion de fichiers... :
Code :
|
Là ca m'embète un peu quand même, vous avez une idée de comment "augmenter" les droits du contexte d'éxecution ??
Marsh Posté le 13-10-2006 à 13:13:49
C'est un répertoire où, en théorie, tout le monde peut lire et écrire, donc pour l'instant ca me permet de cerner le problème :-/
Après je rangerai ca ailleurs, dans le rep de déploiement de mon appli peut être, je ne sais pas.
Mais donc là, pourquoi est ce que je ne peux pas écrire dans ce répertoire ? Auriez vous une idée ?
Marsh Posté le 13-10-2006 à 14:10:49
le 'en théorie' est très intéressant ici. A vérifier, mais je ne suis pas complètement certain que ton serveur J2EE puisse écrire là.
sinon, les droits unix de ton fichier sont ok ? (555)
Marsh Posté le 13-10-2006 à 14:37:48
Bon, en fait je n'ai pas expliqué ce que je voulais faire avec mon fichier, donc ca ne doit pas être trés clair :
Mon appli est, en gros, un gestionnaire de contacts, qui stock des infos sur des utilisateurs (10 à 20 users).
Ces informations sont stockées dans un fichier xml : UsersInfos.xml.
Dans mon appli, la servlet principale (ShowUserList) affiche, au format html, le contenu de ce fichier. Il y a donc un travail de parsing de ce fichier xml afin d'en obtenir la représentation sous forme d'Objects java.
Mais je n'ai pas qu'à parser le contenu de ce fichier, je doit aussi écrire dessus. Or, j'ai lu sur un forum qu'il n'était pas possible d'écrire directement sur un fichier contenu dans un jar/war (ce qui peut semble assez logique), donc ce que je fais c'est que je crée un fichier UsersInfos.xml quelque part où je pourrai le modifier (en l'occurence j'ai choisi java.io.tmpdir).
Afin de ne pas partir d'une base vierge (rentrer XX utilisateurs à la main à chaque fois) mon War contient plusieurs ressources dont un fichier "UsersInfos.xml" qui me sert donc de base de départ :
ContactManagerOscar.war
/WEB-INF/
|-...
|-res/
| |-...
| |-UsersInfos.xml
|-...
Je cherche donc à créer un nouveau fichier sur le server où je me trouve et le remplir avec le contenu de celui présent dans mon War.
J'arrive trés bien à effectuer cette opération sous windows avec un petit environnement embarqué qui est capable d'héberger des servlets (à partir d'un .jar équivalent à mon war), mais dès que je passe sous Tomcat, je ne m'en sors pas et j'obtiens ça :
Code :
|
Marsh Posté le 13-10-2006 à 14:44:15
Et concernant les droits :
/tmp est en 888
/var est en 555
/var/tmp est en 888
après, ce que j'aimerai avoir, c'est des infos sur les droits qu'à Tomcat à l'éxecution, mais je n'arrive pas à trouve ça sur google. Je vais re-jeter un coup d'oeil à la doc de TomCat, ca ne peut pas faire de mal
Marsh Posté le 13-10-2006 à 14:44:47
Citation : access denied (java.util.PropertyPermission java.io.tmpdir read) |
et donc, les droits unix de ton répertoire, c'est quoi ?
sinon, je pense que tu peux modifier le fichier dans ton war, parce qu'en fait, il n'est plus dans le war une fois l'application déployée. C'est en tout cas vrai avec TomCat, que tu sembles utiliser. L'archive war est décompressée dans un répertoire de travail, où tu dois pouvoir la modifier (à vérifier quand même, je parle sous le contrôle des gurus qui trainent par là).
Sinon, pour afficher ton xml, xsl, c'est pas mal.
et pour stocker des données, une base de données, c'est mieux.
En général j'utilise xml pour la conf de l'application, pas pour son fonctionnement (s'pas clair, hein ?).
Marsh Posté le 13-10-2006 à 15:04:37
brisssou a écrit :
et donc, les droits unix de ton répertoire, c'est quoi ? |
Ok pour le war, pourquoi ne pas faire l'essai... si jamais l'autre solution marche :-)
Pour ce qui est du stockage dans une bdd, d'une part ca me contraint à en avoir une d'installée à chaque endroit ou je déploie ma "demo", et pour 10 users ayant chacun 5/6 champs, je trouvais ca un peu... disproportionné
Enfin en ce qui concerne xsl, je connais assez peu et je n'ai donc pas voulu m'embarquer là dedans (je découvrais assez de nouvelles chose comme ça )
brisssou a écrit : c'est pas tant des droit de tomcat que les droits de ta servlets dans tomcat qu'il faut trouver. |
Voici les droits de la servlet deployée :
-rw-r--r-- 1 tomcat4 nogroup 5179 2006-10-13 14:34 ShowUserList.class
Marsh Posté le 13-10-2006 à 15:06:14
Peut être faudrait il que je donne certain droits à "l'utilisateur" tomcat4 ?
Marsh Posté le 13-10-2006 à 15:14:48
en fait, c'est le opérations que TomCat permet à tes (nos) servlets qu'il faudrait trouvé.
pour la bd, y des systèmes embarqué (sqllite, hsql, ou autres) qui, je crois (jamais testé) doivent pouvoir stocker leur données dans un fichier (qu'ils gèrent eux même) et toi tu utilises la bd.
Marsh Posté le 13-10-2006 à 15:41:14
Bon j'ai tenté de modifier le group de tomcat pour le mettre dans root, et maintenant j'ai ça :
-rw-r--r-- 1 tomcat4 root 5179 2006-10-13 15:36 ShowUserList.class
Et ca ne change rien.
je vais créer un topic ayant un titre un peu plus explicite que celui ci pour reposer la question des droits.
(ou éditer le titre de celui-ci en fait.)
Marsh Posté le 13-10-2006 à 15:56:52
OULA !!!!
tu as des bases en droits Unix ?! parce que là, c'est juste les droits de ton fichiers que tu vois, à savoir :
l'utilisateur en rw, le groupe en r, et le reste du monde en r.
l'utilisateur (propriétaire) du fichier est tomcat4, le groupe (propriétaire) du fichier est root.
c'est tout.
Marsh Posté le 13-10-2006 à 16:27:14
Oui j'ai quelques bases
Et ca ne me semblait pas totalement incohérent (en plein desespoir) qu'en modifiant le groupe propriétaire, tomcat ai plus de droits à l'éxecution.
Ce doit être de mauvaises bases
Bon, j'ai installé un xampp + plug-in tomcat sous windows, et j'ai un soucis différent, il bloque au niveau de la récupération du fichier dans le war... (donc il va un peu plus loin)
Je crois que je vais déjà réécrire proprement mon appli ce week end, et j'y verrai peut être (miraculeusement) plus clair.
Marsh Posté le 13-10-2006 à 18:08:15
à mon avis, ca vient plus de la conf de tomcat : dans le rep conf de tomcat tu vas trouver un fichier policy. édite le, tu devrais pouvoir le régler pour qu'il autorise ton code à accéder au système de fichier.
remarque : c'est la merde la syntaxe de ce fichier ... bon courage
Marsh Posté le 31-10-2006 à 11:34:03
Bon, j'ai fini par faire ce que je voulais (ca fait une bonne semaine mais je n'avais pas encore eu le temps de repasser ici)...
Merci benou pour ta proposition, mais je n'ai pas utilisé cette technique finalement donc je ne peux pas confirmer que ca marche, ni donner un exemple concret :-/
En ce qui me concerne donc, je récupère le path réel de mon appli web :
Code :
|
J'obtiens donc un chemin absolu sur le disque du serveur qui pointe vers le dossier contenant mon appli web (typiquement /usr/local/tomcat/apache-tomcat-5.5.20/webapps/MonAppli pour moi)
Et dans ce dossier et ses sous dossiers, je peux faire tout ce que je veux, c'est à dire créer des dossiers, en supprimer, en renommer, bref tout ce que je veux faire.
Voilà !
Merci à tous pour vos réponses.
Marsh Posté le 13-10-2006 à 10:03:26
Bonjour,
je rencontre un problème sous Tomcat 4. Il me semble assez classique (pour un débutant) mais je n'arrive pas à en venir à bout.
J'essaye de déployer un war (que j'ai construit moi même, sans passer par un plug-in, donc l'erreur peut venir de là) mais je rencontre l'erreur suivante :
Mon war s'appelle ContactManagerOscar.war. Je le déploie en utilisant le TomcatManager auquel je me log en utilisant le login/mdp tomcat/tomcat.
Dans le Tomcatmanager, j'utilise "Upload a WAR file to install" pour uploader le war se situant sur ma machine, sur celle servant de serveur.
Une fois cela fait, le tomcat manager me dit :
Je tappe donc l'adresse : http://192.168.1.10:porttomcat/ContactManagerOscar/ et j'arrive sur une page m'affichant :
je considère cela comme normal vu que je n'ai pas spécifié de page d'accueil dans mon web.xml.
Je tappe donc l'adresse d'une servlet que j'ai mappé : http://192.168.1.10:porttomcat/ContactManagerOscar/showuserlist et j'arrive sur la page suivante :
Et là je ne comprends pas grand chose. J'ai tenté de jeter un coup d'oeil aux logs, mais je crois qu'ils ne contiennent qu'une duplication du message ci dessus.
Mon War a l'arborescence suivante :
/META-INF/
|-MANIFEST.MF
/WEB-INF/
|-classes/
| |-com
| | |-monsite
| | | |-partmult
| | | | |-webui
| | | | | |-ShowUserList.class (C'est une servlet, il y en a d'autres ainsi que des non-servlets, mais c'est celle ci que je voudrai atteindre)
|-lib/
| |-kxml-min.jar
|-res/
| |-tools.js
|-web.xml
et mon web xml a la gueule suivante :
Alors comme Tomcat me sort le message "La servlet showServlet est actuellement indisponible" pour la requête "http://192.168.1.10:leporttomcat/ContactManagerOscar/showuserlist" le mapping semble marcher, donc je ne sais pas trop où chercher...
Merci d'avance pour votre aide !
Message édité par ikao2 le 13-10-2006 à 10:05:23