Ejemplo de sesión de Google AppEngine

Acabo de habilitar Session en mi aplicación Google AppEngine / Java + GWT. ¿Y cómo lo uso? ¿Cómo obtengo el ID de sesión y reproduzco todas las cosas buenas de él? ¿Hay ejemplos reales de una página de inicio de sesión simple en la que solo estoy ingresando LoginName y Password, luego va al servidor a través de una llamada RPC, se autentica en la base de datos y envía la ID de sesión al cliente.

Ya tengo el siguiente código pero no sé qué hacer a continuación:

Formulario de inicio de sesión de GWT:

public class LoginForm {
    private final LoginServiceAsync loginService = GWT.create(LoginService.class);

    VerticalPanel loginVp = new VerticalPanel();
    TextBox loginTxt = new TextBox();
    TextBox passTxt = new TextBox();

    Button loginBtn = new Button("Login");

    public Widget getLoginWidget(){

        loginBtn.addClickHandler(new ClickHandler(){

            public void onClick(ClickEvent arg0) {

                loginService.authenticateUser(loginTxt.getText(), passTxt.getText(), 
                        new AsyncCallback<String>(){

                            public void onFailure(Throwable caught) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "No Connetion", "Problem conneting to the server.");
                            }

                            public void onSuccess(String result) {
                                InfoPanel.show(InfoPanelType.HUMANIZED_MESSAGE, "Session ID", "Your session id is: " + result);

                                GWT.log("Setting up session", null);
                                String sessionID = result;
                                final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login. 2 weeks
                                Date expires = new Date(System.currentTimeMillis() + DURATION);
                                Cookies.setCookie("sid", sessionID, expires, null, "/", false);
                            }
                        }
                );  
            }   
        });

        loginVp.add(loginTxt);
        loginVp.add(passTxt);
        loginVp.add(loginBtn);

        return loginVp;
    }
}

Servlet RPC:

public class LoginServiceImpl extends RemoteServiceServlet implements LoginService{ 
    //Sends back to the client session id
    public String authenticateUser(String login, String password){
        String sessionId = new String();

        // TODO: figure out how to work with session id in GAE/J
        sessionId = "How to get session id?";

        return sessionId;
    }

    public Boolean checkIfSessionIsValid(String sessionId){

        //TODO: figure out how to check user's credentials  
        return true;
    }
}

Cualquier sugerencia en la dirección correcta sería útil. Gracias.

Respuesta 1

Así es como puede obtener la sesión en GAE:

this.getThreadLocalRequest().getSession();
Respuesta: 2

Tengo dos clases Una (Persona) para captadores y establecedores, y otra (Personas) para calcular los datos. Cuál es mi situación es que obtengo los datos de la base de datos usando ResultSet, luego creé un Objeto persona para ...

Quiero desmarcar mediante programación la fila (o filas) actualmente seleccionada en una JTable. Básicamente quiero lo opuesto a esto: JTable table = ...; table.setRowSelectionInterval (x, x); Lo intenté (con ...

Estoy usando JSQLPARSER por primera vez. Tengo algunos archivos SQL que vienen dinámicamente, necesito leer los nombres de tablas y columnas de ese SQL. Después de mucho googlear probé con JSQLPARSER. Estoy intentando ...

Estoy escribiendo en la ventana del navegador usando servletResponse.getWriter (). Write (String). Pero, ¿cómo borro el texto que fue escrito previamente por alguna otra llamada de escritura similar?