code: @Modified
      protected void modified(final ComponentContext context, Map<String, Object> properties) {
          String jndiName = (String) properties.get("jndiName");
          String oldJNDIName = jndiNameRef.getAndSet(jndiName);
          String xsvcName = jndiName == null ? (String) properties.get("config.displayId") : jndiName;
          name.set(xsvcName);
  
          Map<String, String> execProps = new TreeMap<String, String>();
          execProps.put(WSContextService.DEFAULT_CONTEXT, WSContextService.UNCONFIGURED_CONTEXT_TYPES);
          execProps.put(WSContextService.TASK_OWNER, xsvcName);
          defaultExecutionProperties.set(execProps);
  
          // If the JNDI name changes, notify the application recycle coordinator
          if (jndiName == null ? oldJNDIName != null : !jndiName.equals(oldJNDIName))
              if (!applications.isEmpty()) {
                  ApplicationRecycleCoordinator appCoord = AccessController.doPrivileged(new PrivilegedAction<ApplicationRecycleCoordinator>() {
                      @Override
                      public ApplicationRecycleCoordinator run() {
                          return (ApplicationRecycleCoordinator) context.locateService(APP_RECYCLE_SERVICE);
                      }
                  });
                  Set<String> members = new HashSet<String>(applications);
                  applications.removeAll(members);
                  appCoord.recycleApplications(members);
              }
      }
docs: /*
  
  @param context DeclarativeService defined/populated component context