Foro sobre Java EE > Migración de sesión, serialización.
¿Cuando dices "migración de sesión de una VM a otra" te refieres a compartir la sesión entre dos equipos diferentes, por ejemplo, para montar un cluster?
En el libro antes de mostar esquemas indican:
"How an app server vendor handles clustering and web app distribution varies with each vendor, and there's no guarantee in the J2EE spec that vendor has to support distributed apps.But the picture here gives you a high-level idea of how it works. The key point is that while other parts of the app are replicated on cach node/VM, the session objects are moved. And that is guaranteed.In other words, if the vendor does support distributed apps, the the Container is required to migrate sessions across VMs. Ant that includes migrating session attributes as well".
Luego en el esquema que muestra de ejemplo muestra un "Load-balancing Server/Container" que se antepone a dos containers A y B. Ante la petición de un usuario, primero dirige la acción al container A, en una seguna petición del usuario el balanceo de carga decide dirigir la petición a B, en este punto es cuando se produce la migración de la sesión ,"passivated on VM A" a "activated on VM B".
Buenas,
Buf, es que esta es una cuestion muy muy amplia y si se tuviera que meter en detalles probablemente seria necesario otro libro...
Como bien dice, la implementacion depende de cada vendor y la especificacion aporta poco en este sentido.
Por ejemplo en el caso de Tomcat tienes mucho detalle aqui:
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
yo nunca me platearia implementar yo mismo el balanceo de la sesion, la verdad, porque seguro que lo hago mal. Para ello ya existen productos muy avanzados. Te pongo un par de propuestas que se me vienen a la mente para que investigues:
Hazelcast: http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch08.html
Terracota Web Sessions: http://terracotta.org/documentation/3.7.4/web-sessions
Me resultar curioso que un libro sobre JSPs y Servlets se meta en estos berenjenales. Podrias indicarnos que libro es ese?
Un saludo
Hola,
Antes de nada aclarar, que estoy indicando mal el nombre del listener, el correcto es HttpSessionActivationListener y no HttpSessionAtributeListener.
Ell libro en cuestión es "Head First Servlets and JSP", 2nd Editio, O'Reilly.
Cuando habla de los listeners que afectan el comportamiento de la sesión uno de los que refiere es el HttpSessionActivationListener.
Realmente el libro no profundiza en el tema de la migración de la sesión, más que nada es mi curiosidad, tengo leído sobre la serialización , aquí indica que este listener interviene en la serialización (cuando migra la sesión) pero no indica como.
Este listener tiene 2 métodos , sessionDidActivate() y sessionWillPasivate(). Empiezo a pensar que si cuadra es el propio programador el que tiene que introduciren ellos el código relativo a la serialización, no sé, tal y como lo indica el libro parece que es un proceso que de alguna manera ya está implantado en alguna parte.
Un saludo
Buenas,
Es un buen libro. Yo lo lei para hacer la certificacion de web components developer y me fue bien.
Ese listener y sus metodos te permiten ejecutar logica cuando el servidor recupera y persiste la sesion (tarea que cada servidor realiza como le parece y es transparente para nosotros). A mi la verdad que nunca se me ha dado el caso de tener que implementar esos metodos....
Un saludo
Hola:
Pues gracias por la información, creo que lo encontré buscando en configuraciones del Tomcat.
http://alvinalexander.com/java/jwarehouse/apache-tomcat-6.0.16/java/org/apache/catalina/session/StandardSession.java.shtml
En el libro no referencian para nada la StandardSession, pero parece ser que es la que esta relacionada con el listener y se encarga del proceso de serialización.
Gracias.
Por cierto, UnoPorAhi, estoy preparando esa misma certificación, conseguí ese libro y tengo la documentación oficial de las especificaciones de Servlets. Lo que es más dificil conseguir son test "gratuitos" para preparar el exámen, no sabrás de algún enlace.
Lo que tengo por ahora es un test referido a las especificaciones de los Servlest que es bastante bueno: http://piotrnowicki.com/2011/03/jee-6-scwcd-mock-questions/
Estoy tratando de conseguir test gratuitos referidos al exámen, sobre Servlets,jps,tld,etc...
Gracias.
Pues ni idea, yo la hice hace unos 6 años y la verdad es que no mire ningun test. Simplemente me estudie el temario con un par de manuales y me fui a hacer el examen
Un saludo y suerte
Hola:
Estoy leyendo un libro que trata sobre Servlets y JSP's. En un punto trata el tema de la migración de sesión de una VM a otra.
Según indican, en un container no se le requiere el uso de serialización, por lo cual no hay garantía de que readObject() y writeObject() sean llamados en la serialización de un atributo o de la iinstanciación de una de sus variables.
Se indica que si se necesita guardar y restaurar la instancia de una variable en un atributo, se haga uso de HttpSessionAtributeListener, en el cual sus dos métodos sessionDidActivate() y sessionWillPassuvate() son el camino para poder usar readObject() y writeObject().
Entiendo lo que indican pero no profundizan en el tema ( teniendo en cuenta además que el libro está en inglés y que la traducción que yo pueda interpretar puede variar del proceso real).
¿Qué tratan de indicar? ¿Qué de alguna manera se ejecuta el proceso de serialización de manera oculta?
He estado mirando el código del listener y enlaces en google, pero no encuentro nada que realmente me aclare que es lo que sucede realmente para que se realice este proceso. Entiendo lo que sucede, pero quisiera ver de que manera se produce.
Alguién me puede indicar donde puedo ver una explicación clarificatoria.
Gracias