code: protected void modified(Map<String, Object> newProperties) throws Exception {
          final boolean trace = TraceComponent.isAnyTracingEnabled();
          if (trace && tc.isEntryEnabled())
              Tr.entry(this, tc, "modified", newProperties);
          boolean reCreateNeeded = false;
  
          lock.writeLock().lock();
          try {
              properties = newProperties;
              if (pm != null) {
                  try {
                      processServerPoolManagerProperties(null, newProperties);
                  } catch (IllegalStateException e1) {
                      if (trace && tc.isDebugEnabled())
                          Tr.debug(this, tc, "modify failed, retrying", CommonFunction.stackTraceToString(e1));
                      try {
                          processServerPoolManagerProperties(null, newProperties);
                      } catch (IllegalStateException e2) {
                          reCreateNeeded = true;
                          if (trace && tc.isDebugEnabled())
                              Tr.debug(this, tc, "retry failed", CommonFunction.stackTraceToString(e2));
                      }
                  }
              }
          } finally {
              lock.writeLock().unlock();
          }
  
          if (reCreateNeeded)
              try {
                  setChanged();
                  notifyObservers();
              } catch (Throwable x) {
                  FFDCFilter.processException(x, getClass().getName(), "402", this);
                  if (trace && tc.isDebugEnabled())
                      Tr.debug(this, tc, x.getMessage(), CommonFunction.stackTraceToString(x));
              }
  
          if (trace && tc.isEntryEnabled())
              Tr.exit(this, tc, "modified");
      }
docs: Called by Declarative Services to modify service config properties
  
  @param newProperties the new configuration
  @throws Exception if unable to complete the modifications