code: public boolean isRetryable(Throwable ex) {
          try {
              String retryableAttr = getAttributeValueSmart(PROP_RETRY_EXCEPTIONS);
              if (retryableAttr != null) {
                  for (String retryableExClass : retryableAttr.split(",")) {
                      if (ex.getClass().getName().equals(retryableExClass)
                              || (ex.getCause() != null && ex.getCause().getClass().getName()
                                      .equals(retryableExClass)))
                          return true;
                  }
                  return false;
              }
          }
          catch (Exception e) {
              logger.severeException(e.getMessage(), e);
          }
  
          return ex instanceof IOException;
      }
docs: Default behavior returns true if Throwable is included in RETRY_EXCEPTIONS
  attribute (if declared).  If this attribute is not declared, any IOExceptions are
  considered retryable.