Пример #1
0
  /**
   * Try to find services, automatically retrying in the case of a communication failure
   *
   * @param iface
   * @return
   */
  public List<ServiceDescription> findServices(Class<?> iface) {
    final ServiceSearchRequest request = new ServiceSearchRequest();
    request.iface = iface.getName();

    for (int i = 0; i < apiCallRetryLimit; i++) {
      if (i != 0) apiCallRetryTime.sleep(); // wait before we try again

      try {
        final ServiceSearchResults results = service.searchForServices(request);

        return results.services;
      } catch (Exception e) {
        log.warn("Index service search failed", e);
      }
    }

    // Try one last time without failure catching logic
    final ServiceSearchResults results = service.searchForServices(request);
    return results.services;
  }