docs: @Override
      protected void init() throws Exception {
          BootstrapContextImpl bootstrapContext = bootstrapContextRef.getServiceWithException();
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(this, tc, "loading", mcfImplClassName);
          if (mcfImplClassName == null) // TODO: get the real config element name of the nested properties
              throw new IllegalArgumentException(Utils.getMessage("J2CA8504.incorrect.props.list", "properties", configElementName, id));
          mcf = (ManagedConnectionFactory) bootstrapContext.loadClass(mcfImplClassName).newInstance();
          bootstrapContext.configure(mcf, jndiName, properties, null, null, null);
  
          if (connectionManagerRef == null)
              conMgrSvc = ConnectionManagerService.createDefaultService(jndiName);
          else
              conMgrSvc = (ConnectionManagerService) priv.locateService(componentContext, CONNECTION_MANAGER);
          conMgrSvc.addObserver(this);
          isInitialized.set(true);
  
          conMgrSvc.addRaClassLoader(bootstrapContext.getRaClassLoader());
      }