Tengo una aplicación GWT que tiene el servicio RPC en su parte posterior. Actualmente estoy tratando de implementar el soporte de los usuarios y la única pregunta que aún queda es la forma en que debo almacenar los datos de la sesión.Trabajar con sesiones en la aplicación GWT
Estoy almacenando identificador de sesión utilizando
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
Así, la primera pregunta es más para servlets Java que a GWT. ¿Esta garantía de código que la próxima vez que haga una llamada como ésta:
getThreadLocalRequest().getSession().getAttribute("sid");
Sería bien ser nulo (en caso de que se llama para el usuario que aún no ha visitado el pedazo de código en la que se establece el atributo SID) o sería exactamente el mismo SID que ya guardé para ese usuario. En otras palabras, ¿son estas 2 piezas de código específicas para el usuario? (Por usuario Me refiero a un solo navegador en una sola computadora)
La segunda pregunta es sobre el almacenamiento de las asignaciones entre los SID y algunos datos adicionales, como la identificación del usuario. En caso de que tenga un código como este:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
Es garantizado que sessions
es siempre el mismo objeto para todas las solicitudes y los datos que se mantendrá "viva" a menos que se termina toda la aplicación? (Tomcat se detiene, por ejemplo) ¿Es un enfoque normal o debería persistir todas estas asignaciones en mi base de datos?
Gracias, realmente una gran respuesta! – agibalov