Partage de classes statiques entre web-apps

Partage de classes statiques entre web-apps - Java - Programmation

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 ?

Reply

Marsh Posté le 28-04-2004 à 15:05:20   

Reply

Marsh Posté le 28-04-2004 à 15:06:12    

Classloader

Reply

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 ?


Message édité par El_gringo le 28-04-2004 à 15:08:14
Reply

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 ?

Reply

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 [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-04-2004 à 08:59:28    

Qu'est ce qui pue ?

Reply

Marsh Posté le 30-04-2004 à 11:45:51    

les singletons


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-04-2004 à 12:04:07    


 
les singletons en général ?
Ou alors les singletons pour les 2 cas que j'ai cités ?

Reply

Marsh Posté le 30-04-2004 à 12:08:28    

en general


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh 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 !

Reply

Marsh Posté le 30-04-2004 à 12:26:01   

Reply

Marsh Posté le 30-04-2004 à 12:33:33    


 
ALors quelle methode utilises tu qd tu dois charger un pool de connexion dans un projet web ?

Reply

Marsh Posté le 30-04-2004 à 16:59:48    

Reply

Marsh 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)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 30-04-2004 à 17:07:40    

kest'a?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-04-2004 à 17:08:31    

[:popcorn]


---------------
IVG en france
Reply

Marsh 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 :??:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

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
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-04-2004 à 20:20:32    

je regarde ca dès que ma tête arrête de me faire mal ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 03-05-2004 à 17:42:29    

the real moins moins a écrit :

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)


 
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  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed