[Servlet JAVA]Editer son web.xml

Statut
N'est pas ouverte pour d'autres réponses.

Jereck

Α & Ω
Staff
Voilà, j'ai une application sous la forme d'une Servlet JAVA (serveur Tomcat).

Cette servlet a besoin de 3 paramètres (IP, Login, Pass) pour fonctionner.

Actuellement, je vérifie dans ma config (donc, les paramètres chargés via le web.xml au démarrage de l'application). S'il n'y a pas de paramètre dans le web.xml, je redirige sur une page avec un formulaire et l'utilisateur est prié de les rentrer manuellement.

Une fois rentrés à la main, les paramètres vont "survivre" aussi longtemps que la servlet.

Mais si on relance le serveur (ou que la servlet a été déchargée), ces paramètres sont perdus.

Est-il donc possible pour une servlet de complèter elle-même son propre web.xml une fois les paramètres rentrés à la main pour pouvoir les récupérer lors du prochain chargement ?

(Lors du déploiement, l'IP et le Login/Pass seront différent d'une implantation à l'autre, on ne peut donc pas envisager de les mettre directement dans le web.xml / fichier WAR).
 

ozilrit

Elite
En somme, tu souhaites que l'étât de la servlet soit persistant ?
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
ouais

donc, que, serveur redéarré, il garde les paramètres.

Pas de serveur DB présent non plus, oublié de le dire.

J'avais pensé à modifier le web.xml pour la simplicité de la lecture.

Sinon, au pire, je fais un "module" de gestion d'un fichier de config, mais s'il y a plus simple, c'est mieux.
 

eGm_

Gibon Blasé
edit : j'ai rien dit.
 

ozilrit

Elite
Sérialiser avant la destruction de la servlet ?
 

Tifox

ou pas
Je ne pense pas qu'on puisse éditer le web.xml (et ça me parait foireux comme idée si c'est autorisé).

Si ça doit survivre a un restart/crash serveur, tu n'as pas de choix que de passer par des données persistante, donc soit DB (que tu n'as pas), soit fichier directement (mais faut pouvoir écrire sur le disque).

Il y a peut-être d'autres solutions, mais c'est la seule qui me vient en tête (sans beaucoup réfléchir il est vrai).
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
Si il faut faire un "module" "chargement/sauvegarde" des paramètres, ouais, je trouverai bien, mais je me demandais s'il n'y avait pas un moyen de ne faire que la partie "sauvegarde" et laisser Tomcat se charger du chargement. Et donc, sauvegarder dans le web.xml même.
 

Tifox

ou pas
Je ne pense pas.

Nous (on utilise JBoss qui est basé sur tomcat), pour ce genre de chose, on utilise soit la DB, soit des fichier sur le disque.
 

eGm_

Gibon Blasé
tu fais du struts ou du j2ee ?
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
J'ai du aller sur Wikipedia pour savoir ce que c'est Struts, donc, non, juste J2EE
 

ozilrit

Elite
Alors soit j'ai rien compris, soit c'est tout con, soit y a un problème d'arch.
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
Pour ceux que ça intéresserait, j'ai pas trouvé comment modifer le web.xml, mais on m'a renseigné sur la classe java.util.Properties qui offre très facilement la possibilité de créer et de relire des fichiers de config.
 

ozilrit

Elite
Si tu veux éviter les fichiers, tu peux même regarder à java.util.Preferences.

The java.util.prefs package provides a way for applications to store and retrieve user and system preference and configuration data. The data is stored persistently in an implementation-dependent backing store. There are two separate trees of preference nodes, one for user preferences and one for system preferences.​
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
C'est une classe abstraite ça, le moyen de stocker les infos dépend de l'implémentation, donc, DB, fichier, etc...

Mais sinon, la classe Properties marche nikel
 

gl0b

▇ ▅ █ ▅ ▇ ▂ ▃ ▁ ▁ ▅ ▃ ▅ ▅ ▄ ▅ ▇
vais noter ta solution mais si tu veux le faire à la main il faut modifier le web.xml et copier dans le répertoire classes de WEB-INF les .class

Voilà ce qu'il faut ajouter dans ton web.xml pour déclarer les .class

<servlet>
<servlet-name>TEST</servlet-name> //nom symbolique du servlet
<servlet-class>classeTest</servlet-class> //nom de la classe
</servlet>

<servlet-mapping>
<servlet-name>TEST</servlet-name> //idem
<url-pattern>/classeTest</url-pattern> //url pour t'adresser à la classe si jamais elle contient un main (pas sûr)
</servlet-mapping>

voilà :-D
 
1er
OP
Jereck

Jereck

Α & Ω
Staff
Oui, mais ça n'a rien à voir avec ce que je demande :mrgreen:

et non, elle ne doit pas contenir un "main" mais les méthodes "doGet" et "doPost" (enfin, pour bien faire) si elle dérive de HttpServlet. Si elle dérive de Servlet, ce sont d'autres méthodes à implémenter, mais le principe estle même : une méthode Init() qui sert de contructeur et une/des méthodes pour gérer les requètes envoyées par le(s) client(s).
 

gl0b

▇ ▅ █ ▅ ▇ ▂ ▃ ▁ ▁ ▅ ▃ ▅ ▅ ▄ ▅ ▇
ok mal lu ton problème, j'avais oublié l'histoire du doGet & doPost >_< merci
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut