code: public void updated(Dictionary dictionary) throws ConfigurationException
      {
          LOGGER.entering(CLASS_NAME, "updated", dictionary);
  
          synchronized (lock)
          {
              if (serviceAgent != null)
              {
                  serviceRegistration.unregister();
  
                  if (LOGGER.isLoggable(Level.FINER)) LOGGER.finer("Server " + this + " stopping...");
  
                  serviceAgent.stop();
  
                  if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine("Server " + this + " stopped successfully");
              }
  
              serviceAgent = SLP.newServiceAgent(dictionary == null ? null : DictionarySettings.from(dictionary));
  
              if (LOGGER.isLoggable(Level.FINER)) LOGGER.finer("Server " + this + " starting...");
  
              serviceAgent.start();
  
              if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine("Server " + this + " started successfully");
  
              serviceRegistration = bundleContext.registerService(IServiceAgent.class.getName(), serviceAgent, dictionary);
          }
  
          LOGGER.exiting(CLASS_NAME, "updated");
      }
docs: Update the SLP service agent's configuration, unregistering from the
  OSGi service registry and stopping it if it had already started.  The
  new SLP service agent will be started with the new configuration and
  registered in the OSGi service registry using the configuration
  parameters as service properties.
  
  @param dictionary The dictionary used to configure the SLP service agent.
  @throws ConfigurationException Thrown if an error occurs during the SLP service agent's configuration.