code: public boolean addDependentService(BundleContext bundleContext, String interfaceClassName, String defaultServiceClassName, String versionRange, Dictionary<String, String> properties)
      {
      	if (interfaceClassName == null)
      		interfaceClassName = defaultServiceClassName;
          ServiceReference serviceReference = BaseClassFinderService.getClassServiceReference(bundleContext, interfaceClassName, versionRange, null);
          Bundle bundle = BaseClassFinderService.findBundle(bundleContext, ClassFinderActivator.getPackageName((defaultServiceClassName != null) ? defaultServiceClassName : interfaceClassName, false), versionRange);
          if (bundle == null)
          	if (serviceReference != null)
          		bundle = serviceReference.getBundle();
  
  		try {
  	        bundleContext.addServiceListener(new DependentServiceRegisteredListener(this, bundleContext), /*"(&" +*/ "(" + Constants.OBJECTCLASS + "=" + interfaceClassName + ")");	// This will call startupThisService once the service is up
  	
  	        if ((serviceReference != null) && ((bundle.getState() & Bundle.ACTIVE) != 0))
  	        {    // Good, dependent service is already up; now I can start up.
  	            return true;
  	        }
  	    	// Dependent service has not started, so I need to start it and then listen
  		    if (serviceReference != null)	// Rare - Service is probably is 'starting' mode.
                  bundleContext.addBundleListener(new DependentBundleStartupListener(this, bundleContext, bundle)); // This will call startupThisService once the service is up
  	    	new BundleStarter(this, bundleContext, interfaceClassName, defaultServiceClassName, versionRange, properties).start();
  		} catch (InvalidSyntaxException e) {
  			e.printStackTrace();
  		}
      	return false;
      }
docs: Make sure the dependent services are up, then call startupService.
  @param interfaceClassName The service interface class
  @param defaultServiceClassName The default service to start
  @param versionRange Bundle version
  @param properties Properties to pass when/if starting the service
  @param baseBundleServiceClassName
  @return false if I'm waiting for the service to startup.