code: public int getSocketTimeout() {
          int timeoutInt = -1;  // -1 indicates it hasn't been set yet
          String timeoutStr = System.getProperty(SOCKET_TIMEOUT);
          if (timeoutStr != null && timeoutStr.length() > 0) {
              int parsedTimeoutInt = Integer.parseInt(timeoutStr);
              if (parsedTimeoutInt >= 0) {
                  timeoutInt = parsedTimeoutInt;
              }
          }
          if (timeoutInt == -1) { // Didn't find a system property
              timeoutStr = getProperty(SOCKET_TIMEOUT);
              if (timeoutStr != null && timeoutStr.length() > 0) {
                  int parsedTimeoutInt = Integer.parseInt(timeoutStr);
                  if (parsedTimeoutInt >= 0) {
                      timeoutInt = parsedTimeoutInt;
                  }
              }
          }
          if (timeoutInt == -1) { // Didn't find any property at all
              timeoutInt = 120 * 1000;
          }
          return timeoutInt;
      }
docs: Returns the timeout (in milliseconds) for sockets operations. The default
  timeout of 30 seconds (30,000 ms) is returned.
  
  @return The timeout for sockets operations. Defaults to 30 seconds.