code: private void sendRequestToAllTransports(TransportRequest request)
              throws JournalException {
          Map<String, JournalException> crucialExceptions =
                  new LinkedHashMap<String, JournalException>();
          Map<String, JournalException> nonCrucialExceptions =
                  new LinkedHashMap<String, JournalException>();
  
          /*
           * Send the request to all transports, accumulating any Exceptions as we
           * go. That way, we increase the likeihood that at least one Transport
           * succeeded in the request.
           */
          for (String transportName : transports.keySet()) {
              Transport transport = transports.get(transportName);
              try {
                  logger.debug("Sending " + request.getClass().getSimpleName()
                          + " to transport '" + transportName + "'");
                  request.performRequest(transport);
              } catch (JournalException e) {
                  if (transport.isCrucial()) {
                      crucialExceptions.put(transportName, e);
                  } else {
                      nonCrucialExceptions.put(transportName, e);
                  }
              }
          }
  
          /*
           * Report the Exceptions. Report the non-crucial ones first, in case the
           * Server decides to take some definitive action on a crucial Exception.
           */
          reportNonCrucialExceptions(nonCrucialExceptions);
          reportCrucialExceptions(crucialExceptions);
      }
docs: Send a request for some operation to the Transports. Send it to all of
  them, even if one or more throws an Exception. Report any exceptions when
  all Transports have been attempted.
  
  @param request
  the request object
  @param args
  the arguments to be passed to the request object
  @throws JournalException
  if there were any crucial problems.