code: public synchronized boolean logon ()
      {
          // if we have a communicator reference, we're already logged on
          if (_comm != null) {
              return false;
          }
  
          // notify our observers immediately
          _observers.apply(new ObserverOps.Session(this) {
              @Override protected void notify (SessionObserver obs) {
                  obs.clientWillLogon(_client);
              }
          });
  
          // create a new communicator and start it up; this will initiate the logon process
          _comm = createCommunicator();
          _comm.setClassLoader(_loader);
          _comm.logon();
  
          // register an interval to keep the clock synced and to send pings when appropriate
          if (_tickInterval == null) {
              _tickInterval = new Interval(_runQueue) {
                  @Override public void expired () {
                      tick();
                  }
                  @Override public String toString () {
                      return "Client.tickInterval";
                  }
              };
              _tickInterval.schedule(5000L, true);
          }
  
          return true;
      }
docs: Requests that this client connect and logon to the server with which it was previously
  configured.
  
  @return false if we're already logged on, true if a logon attempt was initiated.