code: protected synchronized void initChannelFactory(Class<?> type, ChannelFactory factory, Map<Object, Object> properties) throws ChannelFactoryException {
  
          // if no properties were provided, then we must retrieve them from
          // channelFactoriesProperties using the factory type as the key; if
          // the properties were provided, make sure that they are in
          // channelFactoriesProperties for potential future use
          //
  
          ChannelFactoryDataImpl cfd = findOrCreateChannelFactoryData(type);
          cfd.setChannelFactory(factory);
  
          if (properties != null) {
              cfd.setProperties(properties);
          }
  
          try {
              factory.init(cfd);
          } catch (ChannelFactoryException ce) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Factory " + factory + " threw ChannelFactoryException " + ce.getMessage());
              }
              throw ce;
          } catch (Throwable e) {
              FFDCFilter.processException(e, getClass().getName() + ".initChannelFactory", "770", this, new Object[] { factory });
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Factory " + factory + " threw non-ChannelFactoryException " + e.getMessage());
              }
              throw new ChannelFactoryException(e);
          }
  
      }
docs: This method will store factory properties, initialize the factory & map
  the factory to it's type. This method exists primarily as a performance
  enhancement for the WebSphere-specific implementation; without this
  method we would have to create two factory instances: one to translate
  WCCM objects to property maps, the other to be the actual factory in use.
  
  @param type
  @param factory
  @param properties