public static <T, I extends T> void registerRemoteService(
      @Nonnull final String description,
      @Nonnull final String rmiServer,
      final int rmiPort,
      @Nonnull final Class<T> service)
      throws RemoteException, NotBoundException {
    LOG.info("Registering remote service: " + description);

    IServiceProvider<T> serviceProvider =
        new ServiceLocator.ServiceProviderForRemote<T, I>(rmiServer, rmiPort, service);
    ServiceLocator.registerServiceProvider(service, serviceProvider);
  }