J2EE - Cluster et stateful session bean

J2EE - Cluster et stateful session bean - Java - Programmation

Marsh Posté le 03-04-2003 à 13:15:12    

Hello,
 
Mon problème est le suivant. J'ai un stateless session bean exposé en WebService via Apache AXIS. J'ai des clients qui envoie des informations via SOAP pdt un temps plus ou moins long (1 à 2 min)
 
J'ai définis un statefull session bean qui garde l'état d'un client particulier conneté (i.e. chaque fois qu'un client se logue je crée une instance de ce stateful SB pour ce client et je le détruit lorsque le client se délogue).
 
Mais question est, sachant que AXIS ne garde pas de session, quel mécanisme utiliser pour garder la référence de mon stateful session bean (le client renvoit son ID à chaque appel).
 
Au départ j'ai un bete singleton et une hashmap qui matche ID -> instance du bean mais on sera en cluster bientot (et donc plusieurs JVMs).
 
Quelqu'un a de la doc ou un design pattern qui traine? :jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 03-04-2003 à 13:15:12   

Reply

Marsh Posté le 03-04-2003 à 14:13:48    

tu peux configurer Axis pour qu'il gère les sessions.  Il utilise le système des cookies web ...
 
Sinon, c'est quoi le problème de ton cluster ?

Reply

Marsh Posté le 03-04-2003 à 14:42:39    

benou a écrit :

tu peux configurer Axis pour qu'il gère les sessions.  Il utilise le système des cookies web ...
 
Sinon, c'est quoi le problème de ton cluster ?  


 
tu peux me filer un lien/doc/qqch stp? J'ai pas de problème de suivi de session en fait.
 
Le client appelle login -> il recoit un sessionID. Durant cette méthode login a statefull session bean est instancié pour ce client là et sa référence est mappée sur le sessionID
 
le client appelle d'autre méthode en passant son ID. Ca fonctionne très bien avec une hashmap singleton sessionID -> Bean mais lorsqu'on va etre en cluster ce fameux singleton n'en sera plus un.
 
-> Comment faire pour mapper un Id -> bean de manière temporaire de facon a ce que tt les clusters puissent y accéder. J'ai pensé à JNDI mais je ne sais pas si c une bonne idée.
 
:jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 03-04-2003 à 14:45:37    

si cluster il y a, il n'y aura de toutes façons qu'un seul webserver non?
si c'est le cas, ton singleton sera sur la jvm de ce webserver non?
donc il est ou le pb?  [:lucille]


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

Marsh Posté le 03-04-2003 à 14:54:46    

pour la doc/lien/etc, j'ai rien à te fillé : je sais juste qu'il y a un paramétrage (qui a l'époque était non documenté) à faire dans le wsdd.
J'avais appris son existence en lisant la mailing list user (tu devrais retrouver ca assez facilement sur le site : le sujet revenait souvent)
 
Et puis comme dit --, tu auras qu'un seul serveur web => pas de problème ...

Reply

Marsh Posté le 03-04-2003 à 15:05:00    

benou a écrit :

pour la doc/lien/etc, j'ai rien à te fillé : je sais juste qu'il y a un paramétrage (qui a l'époque était non documenté) à faire dans le wsdd.
J'avais appris son existence en lisant la mailing list user (tu devrais retrouver ca assez facilement sur le site : le sujet revenait souvent)
 
Et puis comme dit --, tu auras qu'un seul serveur web => pas de problème ...


 
ok :D
je fais un beau singleton tout pourris alors :D


Message édité par darklord le 03-04-2003 à 15:05:14

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 03-04-2003 à 15:08:40    

DarkLord a écrit :


ok :D
je fais un beau singleton tout pourris alors :D


 :non: pas de static à 2 balles !
 
ServletContext rulez  :o

Reply

Marsh Posté le 03-04-2003 à 15:37:31    

benou a écrit :


 :non: pas de static à 2 balles !
 
ServletContext rulez  :o  


 
j'ai pas de servlet :o  
C'est du SOAP et le client c'est un Palm :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 03-04-2003 à 15:38:52    

benou a écrit :


 :non: pas de static à 2 balles !
 
ServletContext rulez  :o  

pourquoi ? c est pas bien en static ?

Reply

Marsh Posté le 03-04-2003 à 15:40:24    

bha oui, je suis con ...  :sweat:  
 
ils ont toujours pas fait de gestion de cycle de vie et de Context à la servlet, Axis ?  

Reply

Marsh Posté le 03-04-2003 à 15:40:24   

Reply

Marsh Posté le 03-04-2003 à 15:41:12    

noldor a écrit :

pourquoi ? c est pas bien en static ?


j'aime pô les statics !  :o  
 
enfin bon, là c'est vrai que je crois que tu peux difficilement faire autrement... axis sux !

Reply

Marsh Posté le 03-04-2003 à 15:42:49    

benou a écrit :


axis sux !  


 
surtout que lorsque tu veux redeployer ton WS tu dois redémarrer JBoss. C'est suapir [:dawa]


Message édité par darklord le 03-04-2003 à 15:43:02

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 03-04-2003 à 20:47:05    

benou a écrit :

bha oui, je suis con ...  :sweat:  
 
ils ont toujours pas fait de gestion de cycle de vie et de Context à la servlet, Axis ?  
 

si j'ai bien suivi, axis genere une servlet pour chaque webservice que tu deploies!? Ou bien plutot, ils ont une servlet qui peut servir plusieurs ws, ... mais euh jsais plus quand il y a plusieurs servlets. bref. Y'a ptet betement moyen d'etendre ou de remplacer cette servlet...
Apres tout elle doit etre mega simple et deleguer la plupart des trucs à ...à...à autre chose.. :o


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

Marsh Posté le 03-04-2003 à 21:00:53    

si je me trompe pas, y a une seule servlet ...
faudrait vérifier dans le web.xml de axis.
 
mais bon, de toute façon, depuis l'objet qui implémente le WS, y a pas moyen d'accéder à l'objet Servlet ...


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

Marsh Posté le 03-04-2003 à 21:04:41    

benou a écrit :

si je me trompe pas, y a une seule servlet ...
faudrait vérifier dans le web.xml de axis.
 
mais bon, de toute façon, depuis l'objet qui implémente le WS, y a pas moyen d'accéder à l'objet Servlet ...

oui mais moi je pensais à l'inverse: redefinir la servlet d'axis, tout en continuant a utiliser le meme "objet qui implemente le WS"


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

Marsh Posté le 04-04-2003 à 08:58:12    

the real moins moins a écrit :

oui mais moi je pensais à l'inverse: redefinir la servlet d'axis, tout en continuant a utiliser le meme "objet qui implemente le WS"


ca serait une bonne idée ça [:dawa]


Message édité par darklord le 04-04-2003 à 08:58:31

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 13-06-2004 à 17:09:05    

une solution est d utiliser un cache distribue pour manager toi meme tes sessions dans lequel tu met tes ID de session avec un simple HashMap pour garder les infos plutot que d utiliser un statefull session bean. (avec JBossCache par exemple) Dans ce cas le cache distribue l etat de la session sur le cluster.
 
un solution est d utiliser la base de donnee comme memoire commune a tous les noeuds de ton cluster. une simple table ID -> HashMap serializee. Dans ce cas il faut soit meme implementer un garbage collection des vieilles sessions en meme temps.

Reply

Marsh Posté le 13-06-2004 à 19:49:35    

pas con ca tiens [:cupra]

Reply

Sujets relatifs:

Leave a Replay

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