Tu peux passer le Context en paramètre à la méthode qui a besoin de ces informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé d'instancier un singleton et d'y stocker tous les paramètres d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de la même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas trop d'autre solution.
A+
Symon
Zouplaz wrote:
Bonjour, encore une question !
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès à la méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à la configuration de l'application (ex. <appmailserver>x.x.x.x<appmailserver/>.
Merci
Tu peux passer le Context en paramètre à la méthode qui a besoin de ces
informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé
d'instancier un singleton et d'y stocker tous les paramètres
d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de la
même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas
trop d'autre solution.
A+
Symon
Zouplaz wrote:
Bonjour, encore une question !
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès à la
méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à la
configuration de l'application (ex. <appmailserver>x.x.x.x<appmailserver/>.
Tu peux passer le Context en paramètre à la méthode qui a besoin de ces informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé d'instancier un singleton et d'y stocker tous les paramètres d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de la même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas trop d'autre solution.
A+
Symon
Zouplaz wrote:
Bonjour, encore une question !
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès à la méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à la configuration de l'application (ex. <appmailserver>x.x.x.x<appmailserver/>.
Merci
Zouplaz
Symon - :
Tu peux passer le Context en paramètre à la méthode qui a besoin de ces informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé d'instancier un singleton et d'y stocker tous les paramètres d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de la même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas trop d'autre solution.
Justement je veux éviter de passer le Context parce que dans l'avenir les paramètres seront peut être (et sans doute) stockés ailleurs (un fichier .properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
Symon - symon@tatouage.fr :
Tu peux passer le Context en paramètre à la méthode qui a besoin de
ces informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé
d'instancier un singleton et d'y stocker tous les paramètres
d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de
la même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas
trop d'autre solution.
Justement je veux éviter de passer le Context parce que dans l'avenir les
paramètres seront peut être (et sans doute) stockés ailleurs (un fichier
.properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien
ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise
par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
Tu peux passer le Context en paramètre à la méthode qui a besoin de ces informations.
Sinon il faut utiliser un servlet d'initialisation qui sera chargé d'instancier un singleton et d'y stocker tous les paramètres d'initialisation de ton conteneur ...
Ainsi, tu pourras y accéder depuis n'importe quelle classe au sein de la même JVM.
J'aime pas trop les singletons mais dans ce cas précis, je ne vois pas trop d'autre solution.
Justement je veux éviter de passer le Context parce que dans l'avenir les paramètres seront peut être (et sans doute) stockés ailleurs (un fichier .properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
David Molinier
Zouplaz - :
Bonjour, encore une question !
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès à la méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à la configuration de l'application (ex. <appmailserver>x.x.x.x<appmailserver/>.
Peut-être devrais-tu disposer dans ton application d'un "contexte applicatif" ?
Tu écris une classe qui a accès au HttpServlet : elle lit les paramètres utiles au reste de ton application, et les déclare dans un contexte que tu devras mettre à disposition de tes autres classes : paramètre, classe statique, etc... selon ta problématique d'architecture.
Mais si tu essaies de ruser pour qu'une classe qui n'a pas accès au contexte Web arrive tout de même à directement y chercher de l'information, alors ton archi aura perdu en robustesse, et en cohérence.
Enfin, si dans ton archi on trouve une base de données, tu peux aussi imaginer stocker certaines informations dans celle-ci.
-- David Molinier <*>
Zouplaz - pouet@pouet.com :
Bonjour, encore une question !
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès
à la méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à
la configuration de l'application (ex.
<appmailserver>x.x.x.x<appmailserver/>.
Peut-être devrais-tu disposer dans ton application d'un "contexte
applicatif" ?
Tu écris une classe qui a accès au HttpServlet : elle lit les paramètres
utiles au reste de ton application, et les déclare dans un contexte que
tu devras mettre à disposition de tes autres classes : paramètre, classe
statique, etc... selon ta problématique d'architecture.
Mais si tu essaies de ruser pour qu'une classe qui n'a pas accès au
contexte Web arrive tout de même à directement y chercher de
l'information, alors ton archi aura perdu en robustesse, et en cohérence.
Enfin, si dans ton archi on trouve une base de données, tu peux aussi
imaginer stocker certaines informations dans celle-ci.
J'ai une classe qui ne dérive pas de HttpServlet et donc n'a pas accès à la méthode getInitParameter.
Comment puis-je lire une clé qui est dans web.xml ?
Mon besoin, tout simple, est de lire quelques informations propres à la configuration de l'application (ex. <appmailserver>x.x.x.x<appmailserver/>.
Peut-être devrais-tu disposer dans ton application d'un "contexte applicatif" ?
Tu écris une classe qui a accès au HttpServlet : elle lit les paramètres utiles au reste de ton application, et les déclare dans un contexte que tu devras mettre à disposition de tes autres classes : paramètre, classe statique, etc... selon ta problématique d'architecture.
Mais si tu essaies de ruser pour qu'une classe qui n'a pas accès au contexte Web arrive tout de même à directement y chercher de l'information, alors ton archi aura perdu en robustesse, et en cohérence.
Enfin, si dans ton archi on trouve une base de données, tu peux aussi imaginer stocker certaines informations dans celle-ci.
-- David Molinier <*>
Symon
Ben si tu comptes utiliser un autre système pour le paramètrages de ton application, autant swapper directement plutôt que de passer par une phase intermédiaire, non ? La méthode pour les charger au démarrage de ton application web sera la même de toutes façon (utilisation d'un servlet d'initialisation).
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
J'aime pas les singletons parcequ'on ne sait jamais vraiment quand ils seront garbage collectés, alors j'évite un maximum de les utiliser... Mais bon, une HashMap contenant quelques propriétés, ça ne te croquera pas trop de mémoire !
A+
Symon
Justement je veux éviter de passer le Context parce que dans l'avenir les paramètres seront peut être (et sans doute) stockés ailleurs (un fichier .properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
Ben si tu comptes utiliser un autre système pour le paramètrages de ton
application, autant swapper directement plutôt que de passer par une
phase intermédiaire, non ? La méthode pour les charger au démarrage de
ton application web sera la même de toutes façon (utilisation d'un
servlet d'initialisation).
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage
du conteneur, on le met en place avec un tag "load-on-startup" dans la
déclaration des servlets du fichier web.xml, ensuite, la méthode init()
de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
J'aime pas les singletons parcequ'on ne sait jamais vraiment quand ils
seront garbage collectés, alors j'évite un maximum de les utiliser...
Mais bon, une HashMap contenant quelques propriétés, ça ne te croquera
pas trop de mémoire !
A+
Symon
Justement je veux éviter de passer le Context parce que dans l'avenir les
paramètres seront peut être (et sans doute) stockés ailleurs (un fichier
.properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien
ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise
par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
Ben si tu comptes utiliser un autre système pour le paramètrages de ton application, autant swapper directement plutôt que de passer par une phase intermédiaire, non ? La méthode pour les charger au démarrage de ton application web sera la même de toutes façon (utilisation d'un servlet d'initialisation).
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
J'aime pas les singletons parcequ'on ne sait jamais vraiment quand ils seront garbage collectés, alors j'évite un maximum de les utiliser... Mais bon, une HashMap contenant quelques propriétés, ça ne te croquera pas trop de mémoire !
A+
Symon
Justement je veux éviter de passer le Context parce que dans l'avenir les paramètres seront peut être (et sans doute) stockés ailleurs (un fichier .properties ou un .xml, va savoir...)...
Donc ta deuxième proposition me plait bien, sauf que je ne saisis pas bien ce qu'est un "servlet d'initialisation" ? Concrètement ça se caractérise par quoi ?
Et tant que j'y suis, pourquoi est-ce tu n'aimes pas les singletons ?
Fabrice Bacchella
On Wed, 16 Feb 2005 22:49:35 +0100, Symon wrote:
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de rajouter l'élément <listener> dans web.xml ? -- www.castalie.fr
On Wed, 16 Feb 2005 22:49:35 +0100, Symon <symon@tatouage.fr> wrote:
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage
du conteneur, on le met en place avec un tag "load-on-startup" dans la
déclaration des servlets du fichier web.xml, ensuite, la méthode init()
de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de
rajouter l'élément <listener> dans web.xml ?
--
www.castalie.fr
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de rajouter l'élément <listener> dans web.xml ? -- www.castalie.fr
Symon
Ouaip, les deux fonctionneront de toutes façons ! ;o)
Perso, je préfère utiliser un servlet d'initialisation dédié à cette tâche... Mais c'est une question d'habitude.
Ouaip, les deux fonctionneront de toutes façons ! ;o)
Perso, je préfère utiliser un servlet d'initialisation dédié à
cette tâche... Mais c'est une question d'habitude.
Ouaip, les deux fonctionneront de toutes façons ! ;o)
Perso, je préfère utiliser un servlet d'initialisation dédié à cette tâche... Mais c'est une question d'habitude.
Zouplaz
Fabrice Bacchella - :
On Wed, 16 Feb 2005 22:49:35 +0100, Symon wrote:
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de rajouter l'élément <listener> dans web.xml ?
Je viens d'essayer et c'est pas mal du tout, j'ai un peu bataillé au début mais ça tourne bien maintenant. Du coup les paramètres de l'application sont stockés dans un fichier .xml que je place à la racine et les clés sont tout simplement dans une hashmap ... Avec l'aide de 10 lignes de dom4j !
On Wed, 16 Feb 2005 22:49:35 +0100, Symon <symon@tatouage.fr> wrote:
Un "servlet d'initialisation" est un servlet qui est chargé au
démarrage du conteneur, on le met en place avec un tag
"load-on-startup" dans la déclaration des servlets du fichier web.xml,
ensuite, la méthode init() de se servlet est "automatiquement" appelée
lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de
rajouter l'élément <listener> dans web.xml ?
Je viens d'essayer et c'est pas mal du tout, j'ai un peu bataillé au début
mais ça tourne bien maintenant.
Du coup les paramètres de l'application sont stockés dans un fichier .xml
que je place à la racine et les clés sont tout simplement dans une hashmap
... Avec l'aide de 10 lignes de dom4j !
Un "servlet d'initialisation" est un servlet qui est chargé au démarrage du conteneur, on le met en place avec un tag "load-on-startup" dans la déclaration des servlets du fichier web.xml, ensuite, la méthode init() de se servlet est "automatiquement" appelée lors du démarrage du conteneur.
C'est pas mieux d'implémenter l'interface ServletContextListener et de rajouter l'élément <listener> dans web.xml ?
Je viens d'essayer et c'est pas mal du tout, j'ai un peu bataillé au début mais ça tourne bien maintenant. Du coup les paramètres de l'application sont stockés dans un fichier .xml que je place à la racine et les clés sont tout simplement dans une hashmap ... Avec l'aide de 10 lignes de dom4j !