code: public void init(ChannelFactoryData data) throws ChannelFactoryException {
          // Note, this call will throw an exception if any properties are invalid.
          new TCPFactoryConfiguration(data.getProperties());
  
          boolean asyncIOEnabled = ChannelFrameworkImpl.getRef().getAsyncIOEnabled();
          // see if an alternate Comm channel class was specified, if so load it
          commClassName = TCPFactoryConfiguration.getCommClass(asyncIOEnabled);
          if (commClassName != null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Using comm class name [" + commClassName + "]");
              }
              boolean loaded = false;
              final ClassLoader cl = TCPChannelFactory.class.getClassLoader();
              if (cl != null) {
                  try {
                      final String name = commClassName;
                      commClass = AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
                      {
                          public Class<?> run() throws Exception
                      {
                          return cl.loadClass(name);
                      }
                      });
                      loaded = true;
                  } catch (Exception e) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "loadClass failed; " + e);
                      }
                      FFDCFilter.processException(e, getClass().getName() + ".init", "132", this);
                  }
              }
  
              // try using the default loader, although that will probably fail also
              if (!loaded) {
                  try {
                      final String name = commClassName;
                      commClass = AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>()
                      {
                          public Class<?> run() throws Exception
                      {
                          return Class.forName(name);
                      }
                      });
                      loaded = true;
                  } catch (Exception e) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "Class.forName failed; " + e);
                      }
                      FFDCFilter.processException(e, getClass().getName() + ".init", "144", this);
                  }
              }
          }
      }
docs: /*
  @see
  com.ibm.wsspi.channelfw.ChannelFactory#init(com.ibm.websphere.channelfw
  .ChannelFactoryData)