Partage de classes statiques entre web-apps - Java - Programmation
Marsh Posté le 28-04-2004 à 15:07:22
Tomcat à un Classloader différent par web-app ?
EDIT : Et selon toi, c'est une spécificité Tomcat ou tous les Moteurs de servlets fonctionnent comme ça ?
Marsh Posté le 28-04-2004 à 16:53:32
Donc ça ne vous choque en rien non plus que j'utilise 2 singletons pour les 2 choses que je viens de décrire ?
Marsh Posté le 28-04-2004 à 23:10:47
oui, un classloader par webapp, et c'est pas spécifique à tomcat
et tu vis ta vie avec tes singletons. perso je trouve que ça pue, quoi qu'il en soit donc bon
Marsh Posté le 30-04-2004 à 11:45:51
ReplyMarsh Posté le 30-04-2004 à 12:04:07
the real moins moins a écrit : les singletons |
les singletons en général ?
Ou alors les singletons pour les 2 cas que j'ai cités ?
Marsh Posté le 30-04-2004 à 12:08:28
ReplyMarsh Posté le 30-04-2004 à 12:26:01
Ben, dans mon cas, j'avoue que si j'avais à le refaire, je le ferais différament. Mais y a pas mal de cas où je n'vois pas comment se passer de singletons. Sauf à utiliser des méthodes statiques, mais c'est pire !
Marsh Posté le 30-04-2004 à 12:33:33
the real moins moins a écrit : en general |
ALors quelle methode utilises tu qd tu dois charger un pool de connexion dans un projet web ?
Marsh Posté le 30-04-2004 à 16:59:48
ReplyMarsh Posté le 30-04-2004 à 17:02:50
El_gringo a écrit : Ben, dans mon cas, j'avoue que si j'avais à le refaire, je le ferais différament. Mais y a pas mal de cas où je n'vois pas comment se passer de singletons. Sauf à utiliser des méthodes statiques, mais c'est pire ! |
ca reviendra au même avec des static : la notion de static est lié au classloader => si tu as des "classloader cousins" ils ne partageront pas les même variables static.
Une solutions pour ca est de mettre tes classes avec singletons (ou variable static, ce qui revient au même) dans un endroit où 1 seul classloader "parent" des classloader "cousins" est utilisé pour faire le chargement des classes.
Pour tomcat, tu peux peux metter tes classes dans common/classes : ce rep est accessible par toutes les web-app et chargé par un seul classloader (à vérifier, mais je suis quasi-sûr)
Marsh Posté le 30-04-2004 à 17:07:40
ReplyMarsh Posté le 30-04-2004 à 18:59:17
pkoi t'aime pas les singletons ?
J'ai du mal à imagnier pourquoi on pourrait ne pas aimer les singletons
Marsh Posté le 30-04-2004 à 19:03:05
parce que
- y'a une patée de code la dedans qui sert à rien et qui rend le machin anti objet (quelle joie d'étendre un singleton)
- c'est accessible globalement par n'importe qui de n'importe ou dans le code
- c'est merdique à tester (pas mockable)
http://docs.codehaus.org/display/P [...] ntipattern
Marsh Posté le 30-04-2004 à 20:20:32
je regarde ca dès que ma tête arrête de me faire mal ...
Marsh Posté le 03-05-2004 à 17:42:29
the real moins moins a écrit : parce que |
Le Singleton c'est comme toute chose : c'est bien quand c'est bien utilisé. C'est souvant couplé à un pattern Fabrique ou Façade.
Le java c'est bien, c'est objet, blabla...
MAIS rien t'empêche de coder tout un programme dans l'unique méthode Main de ton unique classe.
Tout est affaire d'architecture logicielle
Marsh Posté le 28-04-2004 à 15:05:20
Surprise. Très agréable, vu la situation dans laquelle je me trouvais.
J'explique :
Au départ, on a une web-app.
Celle-ci utilise divers singletons, dont 1 étant une encapsulation de la classe Properties, et 1 autre étant un contrôle de pool de connexions.
Je pensais, à mon grand désaroit, que si j'installais ma web-app 2 fois (2 contextes différents) sur un même moteur de servlets, ces web-app allaient partager ces instances (une seule instance de chacun des singletons communs aux 2 web-apps).
He bien non. Tout est bien séparé, comme je n'osais même pas l'éspérer.
Quelqu'un à une expliquation a ce phénomène qui, pour l'instant à quelque chose de surnaturel à mes yeux ?