protected void propertiesCheck() throws PoolConfigurationException {
        if (this.props == null) {
            throw new PoolConfigurationException("Properties for the pool needs to be defined using " + PoolConfiguration.class);
        }
        try {
            this.driver = (Driver) Class.forName(
                                                this.props.getDriverName(),
                                                true,
                                                this.getClass().getClassLoader()
                                                ).newInstance();
        } catch (Exception e) {
            throw new PoolConfigurationException(
                    "Driver " + this.props.getDriverName() + " cannot be loaded." +
                    "Make sure driver classpath is included.", e);
        }
        if (this.props.getMaxConnections() <= 0) {
            log.warn("Maximum connections in the properties is <= 0. Setting it to default: " + PoolProperties.DEFAULT_MAX_CONNECTIONS);
            this.props.setMaxConnections(PoolProperties.DEFAULT_MAX_CONNECTIONS);
        }
        if (this.props.getInitialSize() > this.props.getMaxConnections() || this.props.getInitialSize() < 0) {
            log.warn("Initial size is " + this.props.getInitialSize() + ". Setting it to default: " + PoolProperties.DEFAULT_INITIAL_SIZE);
            this.props.setInitialSize(PoolProperties.DEFAULT_INITIAL_SIZE);
        }
        if (this.props.getMaxWait() <= 10) {
            log.warn("Maximum wait to throw an exception is set to less than 10. Setting it to default: " + PoolProperties.DEFAULT_MAX_WAIT);
            this.props.setMaxWait(PoolProperties.DEFAULT_MAX_WAIT);
        }
        if (this.props.getRunReleaser() && this.props.getMaxWait() < (3 * this.props.getReleaserInterval())) {
            log.warn("Maximum wait to throw an exception is set to less than 3 * releaseInterval. Setting them to default");
            this.props.setMaxWait(PoolProperties.DEFAULT_MAX_WAIT);
            this.props.setReleaserInterval(PoolProperties.DEFAULT_RELEASER_INTERVAL);
        }
    }