@Override
  public JmsMessageEndpointManager createListenerContainer(JmsListenerEndpoint endpoint) {
    if (this.destinationResolver != null && this.activationSpecFactory != null) {
      throw new IllegalStateException(
          "Specify either 'activationSpecFactory' or "
              + "'destinationResolver', not both. If you define a dedicated JmsActivationSpecFactory bean, "
              + "specify the custom DestinationResolver there (if possible)");
    }

    JmsMessageEndpointManager instance = createContainerInstance();

    if (this.resourceAdapter != null) {
      instance.setResourceAdapter(this.resourceAdapter);
    }
    if (this.activationSpecFactory != null) {
      instance.setActivationSpecFactory(this.activationSpecFactory);
    }
    if (this.destinationResolver != null) {
      instance.setDestinationResolver(this.destinationResolver);
    }
    if (this.transactionManager != null) {
      instance.setTransactionManager(this.transactionManager);
    }
    if (this.phase != null) {
      instance.setPhase(this.phase);
    }

    instance.setActivationSpecConfig(this);
    endpoint.setupListenerContainer(instance);

    return instance;
  }
  @Override
  public C createMessageListenerContainer(JmsListenerEndpoint endpoint) {
    C instance = createContainerInstance();

    if (this.connectionFactory != null) {
      instance.setConnectionFactory(this.connectionFactory);
    }
    if (this.destinationResolver != null) {
      instance.setDestinationResolver(this.destinationResolver);
    }
    if (this.errorHandler != null) {
      instance.setErrorHandler(this.errorHandler);
    }
    if (this.messageConverter != null) {
      instance.setMessageConverter(this.messageConverter);
    }

    if (this.sessionTransacted != null) {
      instance.setSessionTransacted(this.sessionTransacted);
    }
    if (this.sessionAcknowledgeMode != null) {
      instance.setSessionAcknowledgeMode(this.sessionAcknowledgeMode);
    }

    if (this.pubSubDomain != null) {
      instance.setPubSubDomain(this.pubSubDomain);
    }
    if (this.subscriptionDurable != null) {
      instance.setSubscriptionDurable(this.subscriptionDurable);
    }
    if (this.clientId != null) {
      instance.setClientId(this.clientId);
    }

    endpoint.setupMessageContainer(instance);

    initializeContainer(instance);

    return instance;
  }