Package org.postgresql.ds

# Class PGPoolingDataSource

java.lang.Object
org.postgresql.ds.common.BaseDataSource
org.postgresql.ds.PGPoolingDataSource

All Implemented Interfaces:
  `Wrapper`, `Referenceable`, `CommonDataSource`, `DataSource`

Direct Known Subclasses:
  `Jdbc3PoolingDataSource`, `PoolingDataSource`

@Deprecated public class PGPoolingDataSource extends BaseDataSource implements DataSource
Deprecated.
Since 42.0.0, instead of this class you should use a fully featured connection pool like HikariCP, vibur-dbcp, commons-dbcp, c3p0, etc.
DataSource which uses connection pooling. Don't use this if your server/middleware vendor provides a connection pooling implementation which interfaces with the PostgreSQL ConnectionPoolDataSource implementation! This class is provided as a convenience, but the JDBC Driver is really not supposed to handle the connection pooling algorithm. Instead, the server or middleware product is supposed to handle the mechanics of connection pooling, and use the PostgreSQL implementation of ConnectionPoolDataSource to provide the connections to pool.

If you're sure you want to use this, then you must set the properties dataSourceName, databaseName, user, and password (if required for the user). The settings for serverName, portNumber, initialConnections, and maxConnections are optional. Note that only connections for the default user will be pooled! Connections for other users will be normal non-pooled connections, and will not count against the maximum pool size limit.

If you put this DataSource in JNDI, and access it from different JVMs (or otherwise load this class from different ClassLoaders), you'll end up with one pool per ClassLoader or VM. This is another area where a server-specific implementation may provide advanced features, such as using a single pool across all VMs in a cluster.

This implementation supports JDK 1.5 and higher.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected @Nullable String`
  `dataSourceName`
  Deprecated.
  `protected static ConcurrentMap<String,PGPoolingDataSource>`
  `dataSources`
  Deprecated.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PGPoolingDataSource()`
  Deprecated.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addDataSource(String dataSourceName)`
  Deprecated.
  `void`
  `close()`
  Deprecated.
  Closes this DataSource, and all the pooled connections, whether in use or not.
  `protected PGConnectionPoolDataSource`
  `createConnectionPool()`
  Deprecated.
  Creates the appropriate ConnectionPool to use for this DataSource.
  `Connection`
  `getConnection()`
  Deprecated.
  Gets a connection from the connection pool.
  `Connection`
  `getConnection(@Nullable String user, @Nullable String password)`
  Deprecated.
  Gets a non-pooled connection, unless the user and password are the same as the default values for this connection pool.
  `static @Nullable PGPoolingDataSource`
  `getDataSource(String name)`
  Deprecated.
  `@Nullable String`
  `getDataSourceName()`
  Deprecated.
  Gets the name of this DataSource.
  `String`
  `getDescription()`
  Deprecated.
  Gets a description of this DataSource.
  `int`
  `getInitialConnections()`
  Deprecated.
  Gets the number of connections that will be created when this DataSource is initialized.
  `int`
  `getMaxConnections()`
  Deprecated.
  Gets the maximum number of connections that the pool will allow.
  `Reference`
  `getReference()`
  Deprecated.
  Adds custom properties for this DataSource to the properties defined in the superclass.
  `void`
  `initialize()`
  Deprecated.
  Initializes this DataSource.
  `protected boolean`
  `isInitialized()`
  Deprecated.
  `boolean`
  `isWrapperFor(Class<?> iface)`
  Deprecated.
  `protected void`
  `removeStoredDataSource()`
  Deprecated.
  `void`
  `setDatabaseName(@Nullable String databaseName)`
  Deprecated.
  Ensures the DataSource properties are not changed after the DataSource has been used.
  `void`
  `setDataSourceName(String dataSourceName)`
  Deprecated.
  Sets the name of this DataSource.
  `void`
  `setInitialConnections(int initialConnections)`
  Deprecated.
  Sets the number of connections that will be created when this DataSource is initialized.
  `void`
  `setMaxConnections(int maxConnections)`
  Deprecated.
  Sets the maximum number of connections that the pool will allow.
  `void`
  `setPassword(@Nullable String password)`
  Deprecated.
  Ensures the DataSource properties are not changed after the DataSource has been used.
  `void`
  `setPortNumber(int portNumber)`
  Deprecated.
  Ensures the DataSource properties are not changed after the DataSource has been used.
  `void`
  `setServerName(String serverName)`
  Deprecated.
  Ensures the DataSource properties are not changed after the DataSource has been used.
  `void`
  `setUser(@Nullable String user)`
  Deprecated.
  Ensures the DataSource properties are not changed after the DataSource has been used.
  `<T> T`
  `unwrap(Class<T> iface)`
  Deprecated.

  ### Methods inherited from class org.postgresql.ds.common.BaseDataSource

  `createReference, getAdaptiveFetch, getAdaptiveFetchMaximum, getAdaptiveFetchMinimum, getAllowEncodingChanges, getApplicationName, getAssumeMinServerVersion, getAuthenticationPluginClassName, getAutosave, getBinaryTransfer, getBinaryTransferDisable, getBinaryTransferEnable, getCancelSignalTimeout, getChannelBinding, getCleanupSavepoints, getConnectTimeout, getCurrentSchema, getDatabaseMetadataCacheFields, getDatabaseMetadataCacheFieldsMiB, getDatabaseName, getDefaultRowFetchSize, getDisableColumnSanitiser, getEscapeSyntaxCallMode, getGroupStartupParameters, getGssEncMode, getGssLib, getGssResponseTimeout, getHideUnprivilegedObjects, getHostRecheckSeconds, getJaasApplicationName, getJaasLogin, getKerberosServerName, getLoadBalanceHosts, getLocalSocketAddress, getLoggerFile, getLoggerLevel, getLoginTimeout, getLogServerErrorDetail, getLogUnclosedConnections, getLogWriter, getMaxResultBuffer, getMaxSendBufferSize, getOptions, getParentLogger, getPassword, getPortNumber, getPortNumbers, getPreferQueryMode, getPreparedStatementCacheQueries, getPreparedStatementCacheSizeMiB, getPrepareThreshold, getProperty, getProperty, getProtocolVersion, getQuoteReturningIdentifiers, getReadOnly, getReadOnlyMode, getReceiveBufferSize, getRecvBufferSize, getReplication, getReWriteBatchedInserts, getSendBufferSize, getServerName, getServerNames, getSocketFactory, getSocketFactoryArg, getSocketTimeout, getSsl, getSslcert, getSslCert, getSslfactory, getSslfactoryarg, getSslFactoryArg, getSslhostnameverifier, getSslHostnameVerifier, getSslkey, getSslKey, getSslmode, getSslMode, getSslNegotiation, getSslpassword, getSslPassword, getSslpasswordcallback, getSslPasswordCallback, getSslResponseTimeout, getSslrootcert, getSslRootCert, getSspiServiceClass, getStringType, getTargetServerType, getTcpKeepAlive, getTcpNoDelay, getUnknownLength, getUrl, getURL, getUser, getUseSpNego, getXmlFactoryFactory, initializeFrom, isAllowEncodingChanges, isCleanupSavePoints, isColumnSanitiserDisabled, isDisableColumnSanitiser, isLoadBalanceHosts, isLogUnclosedConnections, isReadOnly, isReWriteBatchedInserts, isSsl, isTcpKeepAlive, readBaseObject, setAdaptiveFetch, setAdaptiveFetchMaximum, setAdaptiveFetchMinimum, setAllowEncodingChanges, setApplicationName, setAssumeMinServerVersion, setAuthenticationPluginClassName, setAutosave, setBinaryTransfer, setBinaryTransferDisable, setBinaryTransferEnable, setCancelSignalTimeout, setChannelBinding, setCleanupSavepoints, setCleanupSavePoints, setConnectTimeout, setCurrentSchema, setDatabaseMetadataCacheFields, setDatabaseMetadataCacheFieldsMiB, setDefaultRowFetchSize, setDisableColumnSanitiser, setEscapeSyntaxCallMode, setFromReference, setGroupStartupParameters, setGssEncMode, setGssLib, setGssResponseTimeout, setHideUnprivilegedObjects, setHostRecheckSeconds, setJaasApplicationName, setJaasLogin, setKerberosServerName, setLoadBalanceHosts, setLocalSocketAddress, setLoggerFile, setLoggerLevel, setLoginTimeout, setLogServerErrorDetail, setLogUnclosedConnections, setLogWriter, setMaxResultBuffer, setMaxSendBufferSize, setOptions, setPortNumbers, setPreferQueryMode, setPreparedStatementCacheQueries, setPreparedStatementCacheSizeMiB, setPrepareThreshold, setProperty, setProperty, setProtocolVersion, setQuoteReturningIdentifiers, setReadOnly, setReadOnlyMode, setReceiveBufferSize, setRecvBufferSize, setReplication, setReWriteBatchedInserts, setSendBufferSize, setServerNames, setSocketFactory, setSocketFactoryArg, setSocketTimeout, setSsl, setSslcert, setSslCert, setSslfactory, setSslfactoryarg, setSslFactoryArg, setSslhostnameverifier, setSslHostnameVerifier, setSslkey, setSslKey, setSslmode, setSslMode, setSslNegotiation, setSslpassword, setSslPassword, setSslpasswordcallback, setSslPasswordCallback, setSslResponseTimeout, setSslrootcert, setSslRootCert, setSspiServiceClass, setStringType, setTargetServerType, setTcpKeepAlive, setTcpNoDelay, setUnknownLength, setUrl, setURL, setUseSpNego, setXmlFactoryFactory, writeBaseObject`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface javax.sql.CommonDataSource

  `createShardingKeyBuilder, getParentLogger`

  ### Methods inherited from interface javax.sql.DataSource

  `createConnectionBuilder, getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter`

- ## Field Details

  - ### dataSources

    protected static ConcurrentMap<String,PGPoolingDataSource> dataSources
    Deprecated.

  - ### dataSourceName

    protected @Nullable String dataSourceName
    Deprecated.

- ## Constructor Details

  - ### PGPoolingDataSource

    public PGPoolingDataSource()
    Deprecated.

- ## Method Details

  - ### getDataSource

    public static @Nullable PGPoolingDataSource getDataSource(String name)
    Deprecated.

  - ### getDescription

    public String getDescription()
    Deprecated.
    Gets a description of this DataSource.
    Specified by:
      `getDescription` in class `BaseDataSource`
    Returns:
      description of this DataSource-ish thing

  - ### setServerName

    public void setServerName(String serverName)
    Deprecated.
    Ensures the DataSource properties are not changed after the DataSource has been used.
    Overrides:
      `setServerName` in class `BaseDataSource`
    Parameters:
      `serverName` - name of the host the PostgreSQL database is running on
    Throws:
      `IllegalStateException` - The Server Name cannot be changed after the DataSource has been used.

  - ### setDatabaseName

    public void setDatabaseName(@Nullable String databaseName)
    Deprecated.
    Ensures the DataSource properties are not changed after the DataSource has been used.
    Overrides:
      `setDatabaseName` in class `BaseDataSource`
    Parameters:
      `databaseName` - name of the PostgreSQL database
    Throws:
      `IllegalStateException` - The Database Name cannot be changed after the DataSource has been used.

  - ### setUser

    public void setUser(@Nullable String user)
    Deprecated.
    Ensures the DataSource properties are not changed after the DataSource has been used.
    Overrides:
      `setUser` in class `BaseDataSource`
    Parameters:
      `user` - user to connect as by default
    Throws:
      `IllegalStateException` - The User cannot be changed after the DataSource has been used.

  - ### setPassword

    public void setPassword(@Nullable String password)
    Deprecated.
    Ensures the DataSource properties are not changed after the DataSource has been used.
    Overrides:
      `setPassword` in class `BaseDataSource`
    Parameters:
      `password` - password to connect with by default
    Throws:
      `IllegalStateException` - The Password cannot be changed after the DataSource has been used.

  - ### setPortNumber

    public void setPortNumber(int portNumber)
    Deprecated.
    Ensures the DataSource properties are not changed after the DataSource has been used.
    Overrides:
      `setPortNumber` in class `BaseDataSource`
    Parameters:
      `portNumber` - port which the PostgreSQL server is listening on for TCP/IP
    Throws:
      `IllegalStateException` - The Port Number cannot be changed after the DataSource has been used.

  - ### getInitialConnections

    public int getInitialConnections()
    Deprecated.
    Gets the number of connections that will be created when this DataSource is initialized. If you do not call initialize explicitly, it will be initialized the first time a connection is drawn from it.
    Returns:
      number of connections that will be created when this DataSource is initialized

  - ### setInitialConnections

    public void setInitialConnections(int initialConnections)
    Deprecated.
    Sets the number of connections that will be created when this DataSource is initialized. If you do not call initialize explicitly, it will be initialized the first time a connection is drawn from it.
    Parameters:
      `initialConnections` - number of initial connections
    Throws:
      `IllegalStateException` - The Initial Connections cannot be changed after the DataSource has been used.

  - ### getMaxConnections

    public int getMaxConnections()
    Deprecated.
    Gets the maximum number of connections that the pool will allow. If a request comes in and this many connections are in use, the request will block until a connection is available. Note that connections for a user other than the default user will not be pooled and don't count against this limit.
    Returns:
      The maximum number of pooled connection allowed, or 0 for no maximum.

  - ### setMaxConnections

    public void setMaxConnections(int maxConnections)
    Deprecated.
    Sets the maximum number of connections that the pool will allow. If a request comes in and this many connections are in use, the request will block until a connection is available. Note that connections for a user other than the default user will not be pooled and don't count against this limit.
    Parameters:
      `maxConnections` - The maximum number of pooled connection to allow, or 0 for no maximum.
    Throws:
      `IllegalStateException` - The Maximum Connections cannot be changed after the DataSource has been used.

  - ### getDataSourceName

    public @Nullable String getDataSourceName()
    Deprecated.
    Gets the name of this DataSource. This uniquely identifies the DataSource. You cannot use more than one DataSource in the same VM with the same name.
    Returns:
      name of this DataSource

  - ### setDataSourceName

    public void setDataSourceName(String dataSourceName)
    Deprecated.
    Sets the name of this DataSource. This is required, and uniquely identifies the DataSource. You cannot create or use more than one DataSource in the same VM with the same name.
    Parameters:
      `dataSourceName` - datasource name
    Throws:
      `IllegalStateException` - The Data Source Name cannot be changed after the DataSource has been used.
      `IllegalArgumentException` - Another PoolingDataSource with the same dataSourceName already exists.

  - ### initialize

    public void initialize() throws SQLException
    Deprecated.
    Initializes this DataSource. If the initialConnections is greater than zero, that number of connections will be created. After this method is called, the DataSource properties cannot be changed. If you do not call this explicitly, it will be called the first time you get a connection from the DataSource.
    Throws:
      `SQLException` - Occurs when the initialConnections is greater than zero, but the DataSource is not able to create enough physical connections.

  - ### isInitialized

    protected boolean isInitialized()
    Deprecated.

  - ### createConnectionPool

    protected PGConnectionPoolDataSource createConnectionPool()
    Deprecated.
    Creates the appropriate ConnectionPool to use for this DataSource.
    Returns:
      appropriate ConnectionPool to use for this DataSource

  - ### getConnection

    public Connection getConnection(@Nullable String user, @Nullable String password) throws SQLException
    Deprecated.
    Gets a non-pooled connection, unless the user and password are the same as the default values for this connection pool.
    Specified by:
      `getConnection` in interface `DataSource`
    Overrides:
      `getConnection` in class `BaseDataSource`
    Parameters:
      `user` - user
      `password` - password
    Returns:
      A pooled connection.
    Throws:
      `SQLException` - Occurs when no pooled connection is available, and a new physical connection cannot be created.

  - ### getConnection

    public Connection getConnection() throws SQLException
    Deprecated.
    Gets a connection from the connection pool.
    Specified by:
      `getConnection` in interface `DataSource`
    Overrides:
      `getConnection` in class `BaseDataSource`
    Returns:
      A pooled connection.
    Throws:
      `SQLException` - Occurs when no pooled connection is available, and a new physical connection cannot be created.

  - ### close

    public void close()
    Deprecated.
    Closes this DataSource, and all the pooled connections, whether in use or not.

  - ### removeStoredDataSource

    protected void removeStoredDataSource()
    Deprecated.

  - ### addDataSource

    protected void addDataSource(String dataSourceName)
    Deprecated.

  - ### getReference

    public Reference getReference() throws NamingException
    Deprecated.
    Adds custom properties for this DataSource to the properties defined in the superclass.
    Specified by:
      `getReference` in interface `Referenceable`
    Overrides:
      `getReference` in class `BaseDataSource`
    Throws:
      `NamingException`

  - ### isWrapperFor

    public boolean isWrapperFor(Class<?> iface) throws SQLException
    Deprecated.
    Specified by:
      `isWrapperFor` in interface `Wrapper`
    Throws:
      `SQLException`

  - ### unwrap

    public <T> T unwrap(Class<T> iface) throws SQLException
    Deprecated.
    Specified by:
      `unwrap` in interface `Wrapper`
    Throws:
      `SQLException`