code: @Override
      public synchronized VirtualConnectionFactory getOutboundVCFactory(String chainName) throws ChannelException, ChainException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "getOutboundVCFactory: " + chainName);
          }
          if (null == chainName) {
              throw new InvalidChainNameException("Unable to get VCFactory for null chain name");
          }
  
          OutboundVirtualConnectionFactoryImpl vc = outboundVCFactories.get(chainName);
          if (vc == null) {
              // VC Factory does not exist
              ChainData chainData = chainDataMap.get(chainName);
              if (null != chainData) {
                  // Create new VCF. Note this initializes the chain and sets the ref
                  // count to 1.
                  vc = createVirtualConnectionFactory(chainData);
                  outboundVCFactories.put(chainName, vc);
              } else if (-1 != chainName.indexOf(ChannelDataImpl.CHILD_STRING)) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                      Tr.exit(tc, "getOutboundVCFactory");
                  }
                  return getNestedOutboundVCFactory(chainName);
              } else {
                  InvalidChainNameException exp = new InvalidChainNameException("Chain configuration not found in framework, " + chainName);
                  // FFDCFilter.processException(exp,
                  // getClass().getName()+".getOutboundVCFactory", "459", this, new
                  // Object[] {chainName});
                  throw exp;
              }
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Found existing VCF, " + chainName);
              }
              vc.incrementRefCount();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "getOutboundVCFactory");
          }
          return vc;
      }
docs: /*
  @see com.ibm.wsspi.channelfw.ChannelFramework#getOutboundVCFactory(String)