docs: @FFDCIgnore(NoSuchMethodException.class)
      public Object activateEndpoint(WSMessageEndpointFactory mef,
                                     @Sensitive Properties activationProperties,
                                     String authenticationAlias,
                                     String destinationIDOrJNDIName,
                                     AdminObjectService adminObjSvc,
                                     String adminObjSvcRefId) throws ResourceException {
          final boolean trace = TraceComponent.isAnyTracingEnabled();
          if (trace && tc.isEntryEnabled())
              Tr.entry(this, tc, "activateEndpoint", mef, activationProperties, authenticationAlias, destinationIDOrJNDIName, adminObjSvc, adminObjSvcRefId);
  
          // Identify the RA Service to call endpointActivation on
          Object activationSpec;
          BootstrapContextImpl bootstrapContext = null;
          try {
              bootstrapContext = bootstrapContextRef.getServiceWithException();
              String adapterPid = (String) bootstrapContextRef.getReference().getProperty(Constants.SERVICE_PID);
  
              // If the mdb runtime found the admin object service, then get the id from the service,
              // otherwise pass in the destinationID
              if (adminObjSvcRefId == null)
                  adminObjSvcRefId = destinationIDOrJNDIName;
              activationSpec = createActivationSpec(activationProperties,
                                                    authenticationAlias,
                                                    adminObjSvc,
                                                    adminObjSvcRefId,
                                                    destinationIDOrJNDIName,
                                                    mef.getJ2EEName().getApplication());
              int[] fullJCAVersionArray = getFullJCAVersion(bootstrapContext);
              mef.setJCAVersion(fullJCAVersionArray[0], // Major Version
                                fullJCAVersionArray[1]); // Minor Version
              mef.setRAKey(adapterPid);
  
              ActivationConfig config = new ActivationConfig(activationProperties, adminObjSvcRefId, authenticationAlias, mef.getJ2EEName().getApplication());
              if (qmidenabled) {
                  Class<? extends Object> mcImplClass = activationSpec.getClass();
                  try {
                      Method m = mcImplClass.getMethod("getQmid", (Class<?>[]) null);
                      String qmid = (String) m.invoke(activationSpec, (Object[]) null);
                      if (qmid != null) {
                          config.setQmid(qmid);
                      }
                  } catch (NoSuchMethodException nsme) {
                      qmidenabled = false;
                  } catch (InvocationTargetException ite) {
                      qmidenabled = false;
                  }
              }
              // register with the TM
              int recoveryId = isRRSTransactional(activationSpec) ? registerRRSXAResourceInfo(id) : registerXAResourceInfo(config);
              mef.setRecoveryID(recoveryId);
              //TODO Add support for deferred Endpoint Activation.
              if (activationSpec instanceof ActivationSpec) {
                  appsToRecycle.add(mef.getJ2EEName().getApplication());
  
                  jcasu = new JcaServiceUtilities();
                  raClassLoader = bootstrapContext.getRaClassLoader();
  
                  ClassLoader previousClassLoader = jcasu.beginContextClassLoader(raClassLoader);
                  try {
                      bootstrapContext.resourceAdapter.endpointActivation(mef, (ActivationSpec) activationSpec);
                  } finally {
                      jcasu.endContextClassLoader(raClassLoader, previousClassLoader);
                  }
                  if (qmidenabled && config.getQmid() == null) {
                      Class<? extends Object> mcImplClass = activationSpec.getClass();
                      try {
                          Method m = mcImplClass.getMethod("getQmid", (Class<?>[]) null);
                          String qmid = (String) m.invoke(activationSpec, (Object[]) null);
                          config.setQmid(qmid);
                          // TODO - Need to finish this code
                          // recoveryId = isRRSTransactional(activationSpec) ? registerRRSXAResourceInfo(id) : registerXAResourceInfo(config);
                          // mef.setRecoveryID(recoveryId);
                      } catch (NoSuchMethodException nsme) {
                          qmidenabled = false;
                      } catch (InvocationTargetException ite) {
                          qmidenabled = false;
                      }
                  }
                  endpointActivationParams.add(new ActivationParams(activationSpec, mef));
              } else {
                  //TODO We need to handle the case when @Activation is used.
                  throw new UnsupportedOperationException();
              }
              Tr.info(tc, "J2CA8801.act.spec.active", id, mef.getJ2EEName());
          } catch (Exception ex) {
              Tr.error(tc, "J2CA8802.activation.failed", bootstrapContext == null ? null : bootstrapContext.getResourceAdapterName(), ex);
              throw ex instanceof ResourceException ? (ResourceException) ex : new ResourceException(ex);
          }
          if (trace && tc.isEntryEnabled())
              Tr.exit(this, tc, "activateEndpoint", activationSpec);
          return activationSpec;
      }