code: static Object find(String factoryId, String fallbackClassName)
          throws SOAPException
      {
  
          Object obj = find(factoryId);
          if (obj != null)
              return obj;
  
          ClassLoader classLoader;
          try {
              classLoader = Thread.currentThread().getContextClassLoader();
          } catch (Exception x) {
              throw new SOAPException(x.toString(), x);
          }
  
          if (fallbackClassName == null) {
              throw new SOAPException(
                  "Provider for " + factoryId + " cannot be found", null);
          }
  
          return newInstance(fallbackClassName, classLoader);
      }
docs: Finds the implementation <code>Class</code> object for the given
  factory name, or if that fails, finds the <code>Class</code> object
  for the given fallback class name. The arguments supplied must be
  used in order. If using the first argument is successful, the second
  one will not be used.
  <P>
  This method is package private so that this code can be shared.
  
  @return the <code>Class</code> object of the specified message factory;
  may not be <code>null</code>
  
  @param factoryId             the name of the factory to find, which is
  a system property
  @param fallbackClassName     the implementation class name, which is
  to be used only if nothing else
  is found; <code>null</code> to indicate that
  there is no fallback class name
  @exception SOAPException if there is a SOAP error