J2EE - Cluster et stateful session bean - Java - Programmation
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 ?
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 ... |
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.
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?
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 ...
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. |
ok
je fais un beau singleton tout pourris alors
Marsh Posté le 03-04-2003 à 15:08:40
DarkLord a écrit : |
pas de static à 2 balles !
ServletContext rulez
Marsh Posté le 03-04-2003 à 15:37:31
benou a écrit : |
j'ai pas de servlet
C'est du SOAP et le client c'est un Palm
Marsh Posté le 03-04-2003 à 15:38:52
benou a écrit : |
pourquoi ? c est pas bien en static ?
Marsh Posté le 03-04-2003 à 15:40:24
bha oui, je suis con ...
ils ont toujours pas fait de gestion de cycle de vie et de Context à la servlet, Axis ?
Marsh Posté le 03-04-2003 à 15:41:12
noldor a écrit : pourquoi ? c est pas bien en static ? |
j'aime pô les statics !
enfin bon, là c'est vrai que je crois que tu peux difficilement faire autrement... axis sux !
Marsh Posté le 03-04-2003 à 15:42:49
benou a écrit : |
surtout que lorsque tu veux redeployer ton WS tu dois redémarrer JBoss. C'est suapir
Marsh Posté le 03-04-2003 à 20:47:05
benou a écrit : bha oui, je suis con ... |
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..
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 ...
Marsh Posté le 03-04-2003 à 21:04:41
benou a écrit : si je me trompe pas, y a une seule 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"
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
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.
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?
---------------
Just because you feel good does not make you right