code: @Override
      public void deregisterFactory(String name) {
          final boolean bTrace = TraceComponent.isAnyTracingEnabled();
          if (bTrace && tc.isDebugEnabled()) {
              Tr.debug(tc, "Removing factory registration: " + name);
          }
          Class<?> factory = null;
          synchronized (this.factories) {
              factory = this.factories.remove(name);
          }
  
          if (null != factory) {
              final String factoryName = factory.getName();
              final List<String> chains = new ArrayList<String>();
  
              synchronized (this) {
                  for (ChainData chainData : this.chainDataMap.values()) {
                      // Look at each channel associated with this chain.
                      for (ChannelData channel : chainData.getChannelList()) {
                          if (channel.getFactoryType().getName().equals(factoryName)) {
                              chains.add(chainData.getName());
                              break; // out of channel loop
                          }
                      }
                  }
              }
  
              // create a post-action for cleaning up the chains whose factory has been removed.
              Runnable cleanup = new Runnable() {
                  @Override
                  public void run() {
                      for (String chainName : chains) {
                          cleanupChain(chainName);
                      }
                  }
              };
  
              // Stop the chain.. the cleanup will happen once the quiesce is complete.
              ChannelUtils.stopChains(chains, -1L, cleanup);
          }
      }
docs: /*
  @see
  com.ibm.wsspi.channelfw.ChannelFramework#deregisterFactory(java.lang.String
  )