title: Google AppEngine Session Example
body: <p>I just <a href="http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions" rel="noreferrer">enabled Session</a> in my Google AppEngine/Java + GWT application. And how do I use it? How do I get session ID and play will all good stuff from it? Are there any real examples of simple login page where I'm just entering LoginName and Password, then it goes to the server over RPC call, authenticates against database and sends Session ID back to the client.</p>
  
  <p>I have following code already but don't know what to do next:</p>
  
  <p>GWT Login Form:</p>
  
  <pre><code>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&lt;String&gt;(){
  
                              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;
      }
  }
  </code></pre>
  
  <p>RPC Servlet:</p>
  
  <pre><code>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;
      }
  }
  </code></pre>
  
  <p>Any hints in the right direction would be helpful. 
  Thanks.</p>