public void init()

in transaction/transaction-jdbc/src/main/java/org/apache/aries/transaction/jdbc/internal/ConnectionManagerFactory.java [73:181]


    public void init() throws Exception {
        if (transactionManager == null && ("xa".equals(transaction) || "local".equals(transaction))) {
            throw new IllegalArgumentException("transactionManager must be set");
        }
        if (managedConnectionFactory == null) {
            throw new IllegalArgumentException("managedConnectionFactory must be set");
        }
        if (validateOnMatch || backgroundValidation) {
            // Validation requires per-connection matching, see #ARIES-1790
            allConnectionsEqual = false;
        }
        // Apply the default value for property if necessary
        if (transactionSupport == null) {
            // No transaction
            if ("local".equalsIgnoreCase(transaction)) {
                transactionSupport = LocalTransactions.INSTANCE;
            } else if ("none".equalsIgnoreCase(transaction)) {
                transactionSupport = NoTransactions.INSTANCE;
            } else if ("xa".equalsIgnoreCase(transaction)) {
                transactionSupport = new XATransactions(true, false);
            } else {
                throw new IllegalArgumentException("Unknown transaction type " + transaction + " (must be local, none or xa)");
            }
        }
        if (poolingSupport == null) {
            // No pool
            if (!pooling) {
                poolingSupport = new NoPool();
            } else {
                if (partitionStrategy == null || "none".equalsIgnoreCase(partitionStrategy)) {

                    // unpartitioned pool
                    poolingSupport = new SinglePool(poolMaxSize,
                            poolMinSize,
                            connectionMaxWaitMilliseconds,
                            connectionMaxIdleMinutes,
                            allConnectionsEqual,
                            !allConnectionsEqual,
                            false);

                } else if ("by-connector-properties".equalsIgnoreCase(partitionStrategy)) {

                    // partition by connector properties such as username and password on a jdbc connection
                    poolingSupport = new PartitionedPool(poolMaxSize,
                            poolMinSize,
                            connectionMaxWaitMilliseconds,
                            connectionMaxIdleMinutes,
                            allConnectionsEqual,
                            !allConnectionsEqual,
                            false,
                            true,
                            false);
                } else if ("by-subject".equalsIgnoreCase(partitionStrategy)) {

                    // partition by caller subject
                    poolingSupport = new PartitionedPool(poolMaxSize,
                            poolMinSize,
                            connectionMaxWaitMilliseconds,
                            connectionMaxIdleMinutes,
                            allConnectionsEqual,
                            !allConnectionsEqual,
                            false,
                            false,
                            true);
                } else {
                    throw new IllegalArgumentException("Unknown partition strategy " + partitionStrategy + " (must be none, by-connector-properties or by-subject)");
                }
            }
        }
        if (connectionTracker == null) {
            connectionTracker = new ConnectionTrackingCoordinator();
        }
        if (transactionManagerMonitor == null && transactionManager != null) {
            transactionManagerMonitor = new GeronimoTransactionListener(connectionTracker);
            transactionManager.addTransactionAssociationListener(transactionManagerMonitor);
        }
        if (connectionManager == null) {
            if (validateOnMatch || backgroundValidation) {
                // Wrap the original ManagedConnectionFactory to add validation capability
                managedConnectionFactory = new ValidatingDelegatingManagedConnectionFactory((UserPasswordManagedConnectionFactory) managedConnectionFactory);
            }
            if (backgroundValidation) {
                // Instantiate the Validating Connection Manager
                connectionManager = new ValidatingGenericConnectionManager(
                        transactionSupport,
                        poolingSupport,
                        subjectSource,
                        connectionTracker,
                        transactionManager,
                        managedConnectionFactory,
                        name != null ? name : getClass().getName(),
                        getClass().getClassLoader(),
                        backgroundValidationMilliseconds);
            } else {
                // Instantiate the Geronimo Connection Manager
                connectionManager = new GenericConnectionManager(
                        transactionSupport,
                        poolingSupport,
                        subjectSource,
                        connectionTracker,
                        transactionManager,
                        managedConnectionFactory,
                        name != null ? name : getClass().getName(),
                        getClass().getClassLoader());
            }

            connectionManager.doStart();
        }
    }